我已经在我的 win32 应用程序(没有 MFC)中实现了一个所有者绘制按钮。该按钮是一个普通的 20x20 位图(带透明度的圆形图标)。问题是按钮位于纯色背景上,我可以看到按钮的灰色背景(因为位图是圆形的)。我尝试使用 NULL_BRUSH 响应 WM_CTLCOLORBTN 但没有运气。我尝试使用位图和 ico 文件显示按钮,但不会让步。有谁知道如何解决这个问题?
这是我的问题,设置图标的边缘应该是透明的(不是白色/灰色)
我已经在我的 win32 应用程序(没有 MFC)中实现了一个所有者绘制按钮。该按钮是一个普通的 20x20 位图(带透明度的圆形图标)。问题是按钮位于纯色背景上,我可以看到按钮的灰色背景(因为位图是圆形的)。我尝试使用 NULL_BRUSH 响应 WM_CTLCOLORBTN 但没有运气。我尝试使用位图和 ico 文件显示按钮,但不会让步。有谁知道如何解决这个问题?
这是我的问题,设置图标的边缘应该是透明的(不是白色/灰色)
听起来您正在尝试制作非矩形控件。
你可以打电话SetWindowRgn
告诉 Windows 你的控件是非矩形的。
除了@joel的回答之外,如果你想使某些区域透明,请使用一些图像编辑器(RGB(0xFF,0x00,0xFF))在你想要透明的区域中放置一个独特的颜色然后使用TransperantBlt
您说这是一个纯色背景,但您的图像显示某种橙黄色渐变作为背景。如果它确实是标准的 Windows 按钮纯色,您可以使用 LR_LOADMAP3DCOLORS 或 LR_LOADTRANSPARENT 使用 LoadImage 加载位图。由于您有渐变,您将不得不使用更复杂的技术来屏蔽位图。 http://www.winprog.org/tutorial/transparency.html