1

何をしても、アイコンの周りに白/黒の境界線が表示されます...何が得られますか?!

これを正しく行うことさえ可能ですか?HICON を透明な GDI+ ビットマップにコピーするにはどうすればよいですか?

4

1 に答える 1

6

私はそれに数時間を無駄にしました。

以前に何度も無駄にしたことと相まって、はい、イライラします.

GDI+ に問題があることがわかりました。回避策はこちらです。ここに役立つかもしれないいくつかのコードがあります:

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
于 2012-07-05T04:54:03.407 に答える