【发布时间】:2012-07-05 11:37:34
【问题描述】:
无论我做什么,我都会在图标周围出现白色/黑色边框......这是什么原因?!
是否可能正确地做到这一点?如何将 HICON 复制到具有透明度的 GDI+ 位图?
【问题讨论】:
标签: winapi visual-c++ transparency gdi+ gdi
无论我做什么,我都会在图标周围出现白色/黑色边框......这是什么原因?!
是否可能正确地做到这一点?如何将 HICON 复制到具有透明度的 GDI+ 位图?
【问题讨论】:
标签: winapi visual-c++ transparency gdi+ gdi
我只是浪费了几个小时。
加上我之前浪费了多少次,是的,这很令人沮丧。
原来这是 GDI+ 的问题。解决方法是here;下面是一些可能有帮助的代码:
HICON hIcon = ...;
ICONINFO ii; GetIconInfo(hIcon, &ii);
BITMAP bmp; GetObject(ii.hbmColor, sizeof(bmp), &bmp);
Gdiplus::Bitmap temp(ii.hbmColor, NULL);
Gdiplus::BitmapData lockedBitmapData;
Gdiplus::Rect rc(0, 0, temp.GetWidth(), temp.GetHeight());
temp.LockBits(&rc, Gdiplus::ImageLockModeRead, temp.GetPixelFormat(), &lockedBitmapData);
Gdiplus::Bitmap image(
lockedBitmapData.Width, lockedBitmapData.Height, lockedBitmapData.Stride,
PixelFormat32bppARGB, reinterpret_cast<BYTE *>(lockedBitmapData.Scan0));
temp.UnlockBits(&lockedBitmapData);
// Now 'image' has the icon, with transparency
【讨论】:
lockedBitmapData。