0

我已经在我的 win32 应用程序(没有 MFC)中实现了一个所有者绘制按钮。该按钮是一个普通的 20x20 位图(带透明度的圆形图标)。问题是按钮位于纯色背景上,我可以看到按钮的灰色背景(因为位图是圆形的)。我尝试使用 NULL_BRUSH 响应 WM_CTLCOLORBTN 但没有运气。我尝试使用位图和 ico 文件显示按钮,但不会让步。有谁知道如何解决这个问题?

这是我的问题,设置图标的边缘应该是透明的(不是白色/灰色)

在此处输入图像描述

4

3 回答 3

2

听起来您正在尝试制作非矩形控件。

你可以打电话SetWindowRgn告诉 Windows 你的控件是非矩形的。

于 2011-10-30T21:18:36.300 回答
1

除了@joel的回答之外,如果你想使某些区域透明,请使用一些图像编辑器(RGB(0xFF,0x00,0xFF))在你想要透明的区域中放置一个独特的颜色然后使用TransperantBlt

于 2011-10-31T11:40:36.180 回答
1

您说这是一个纯色背景,但您的图像显示某种橙黄色渐变作为背景。如果它确实是标准的 Windows 按钮纯色,您可以使用 LR_LOADMAP3DCOLORS 或 LR_LOADTRANSPARENT 使用 LoadImage 加载位图。由于您有渐变,您将不得不使用更复杂的技术来屏蔽位图。 http://www.winprog.org/tutorial/transparency.html

于 2011-10-31T14:14:30.050 回答