【发布时间】:2012-09-12 18:34:18
【问题描述】:
我想要使用 GDIPlus 显示一个带有部分 alpha(alpha 值介于 0 和 255 之间)的图标。当使用采用直接文件名的 GDI+ 的位图构造函数时,文件正确显示。但是,当从资源加载时,它在识别 alpha 时出现问题。我在 MSDN 上看了,alpha 有问题:http://msdn.microsoft.com/en-us/library/windows/desktop/ms536318.aspx。通过从图标中检索 ICONINFO 结构,我可以摆脱完全透明的像素,但是,部分透明的像素仍然显示为完全不透明或完全透明。
我想知道如何从具有部分 alpha 值的资源中的图标创建 Win32 位图。
【问题讨论】:
-
显示一些代码。从资源中加载部分透明的图标完全没有问题。
-
/*加载并锁定资源*/ HICON icon = LoadIcon (modhandle, MAKEINTRESOURCE(_wtoi(vImageName)));位图 = Gdiplus::Bitmap::FromHICON(icon);如此加载的位图具有零或完整的 alpha,并且看不到部分 alpha
-
我总是使用 LoadImage,因为它可以让您控制图标大小。但他们都没有部分阿尔法的问题。应用程序通常通过调用 LoadIcon 显示带有 alpha 的标准 IDI_xxx 图标。调用 LoadIcon 后出现问题。
-
我使用的图标不是标准的 IDI_xxx 图标(可能是 IDI_xxx 图标没有部分 alpha 的情况,但我不确定),而是资源中包含的自定义图标. MSDN 上也报告了一个社区添加错误(请参阅“社区添加”msdn.microsoft.com/en-us/library/windows/desktop/…),不确定我是否因为这个或其他原因而面临问题
-
我使用 LoadIcon 和 LoadImage 加载我自己的自定义图标。完全没有问题。 IDI_xxx 也有部分 alpha。你的问题在别处。
标签: winapi icons gdi+ embedded-resource