首先,我不是C ++开发人员,我主要在C#编程。我试图在.NET中使用ContextMenu(是的,我知道ContextMenuStrip)类,它是我的应用程序中CMenu的包装器。
如何在具有适当透明度的菜单项旁边显示图像?
我到目前为止所做的是在我的菜单项上调用SetMenuItemBitmaps,这是附加的结果:
如您所见,菜单项上有白色背景。这真是令人沮丧地接近我想要的。如何让透明度问题消失?我在下面的菜单项中附上了我使用的确切图像:
我知道SetMenuItemBitmaps不适用于彩色图像。
选定且清除的位图应为单色。系统使用 布尔AND运算符,用于将位图与菜单组合在一起 白色部分变得透明,黑色部分变成透明 菜单项颜色。如果您使用颜色位图,结果可能是 不希望的。
那么这样做的正确(希望是简单的)方法是什么?
修改
我尝试的另一件事是调用SetMenuItemInfo,但我一直收到错误87(参数无效)。
在调用SetMenuItemInfo之前,这就是MENUITEMINFO结构的样子:
我在SetMenuItemInfo上调用的参数值是:
hMenu - ContextMenu的句柄?
uItem - 0(第一项索引?)
fByPosition - true
lpmii - (上面的结构内容)
答案 0 :(得分:1)
添加菜单项时,只需设置MIIM_BITMAP
标记,然后在HBITMAP
结构的hbmpItem
成员中传递MENUITEMINFO
即可。如果您的位图是32bpp并预先乘以alpha,那么它将正确显示。