将透明位图添加到 Windows 按钮
Posted
技术标签:
【中文标题】将透明位图添加到 Windows 按钮【英文标题】:Adding a transparent bitmap to a windows button 【发布时间】:2010-05-04 11:42:35 【问题描述】:我已经有一段时间没有这样做了,但我正在尝试将自定义按钮图形添加到 Windows 按钮,并带有一些透明区域。我尝试了各种方案,但似乎无法显示透明区域。这是我的代码:
hbmpUpDisabled = LoadImage(instance,MAKEINTRESOURCE(IDB_UPARROWDISABLED), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
SendMessage(GetDlgItem(hWndDlg, IDC_MOVEUP),BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hbmpUpDisabled);
有人注意到这里有什么问题吗?如果我的位图是 1 位位图,它可以工作。我无法让 32 位位图工作,我不知道如何设置 24 位或 8 位位图来做到这一点......我尝试了自定义 255,0,255 颜色(IIRC 是默认透明值),但到目前为止还没有快乐....
【问题讨论】:
可能被骗***.com/questions/261559/… ? 【参考方案1】:LR_LOADMAP3DCOLORS 应该将灰色 - 在源图像中 - 映射到当前按钮表面颜色。按钮不使用 AlphaBlt 或 TransparentBlt,因此无法实际(缺少自定义绘画)将具有透明或 alpha 区域的位图设置到按钮上并期望它工作。您只需在其背景区域中使用正确的按钮颜色预先准备位图。
也就是说 - 我怀疑对于由通用控件 v6 实现的按钮,可能会取消其中一些限制。将 commctl 6 作为依赖程序集添加到您的 exe 中,并查看行为是否发生变化。【讨论】:
以上是关于将透明位图添加到 Windows 按钮的主要内容,如果未能解决你的问题,请参考以下文章