Saat ini saya sedang mengedit beberapa kode GDI lama untuk menggunakan GDI+ dan mengalami masalah saat menggambar file BMP dengan latar belakang transparan. Kode GDI lama tidak menggunakan kode tambahan apa pun untuk menggambar latar belakang transparan, jadi saya bertanya-tanya bagaimana cara mencapainya menggunakan GDI+.
Kode saya saat ini terlihat seperti ini
HINSTANCE hinstance = GetModuleHandle(NULL);
bmp = Gdiplus::Bitmap::FromResource(hinstance, MAKEINTRESOURCEW(IDB_BMP));
Gdiplus::Graphics graphics(pDC->m_hDC);
graphics.DrawImage(&bmp, posX, posY);
Saya juga mencoba membuat bitmap baru dari sumber daya dengan menggunakan metode klon dan menggambar bitmap ke yang baru dibuat tetapi tidak ada yang membantu. Kedua kali saya menggunakan PixelFormat32bppPARGB.
Lalu saya mencoba menggunakan alpha blending tetapi dengan cara ini seluruh gambar menjadi transparan dan tidak hanya latar belakangnya:
Gdiplus::ColorMatrix clrMatrix = {
1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.5f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f
};
Gdiplus::ImageAttributes imgAttr;
imgAttr.SetColorMatrix(&clrMatrix);
graphics.DrawImage(&bmp, destRect, 0, 0, width(), height(), Gdiplus::UnitPixel, &imgAttr);
Informasi transparansi sudah terdapat pada gambar tetapi saya tidak tahu bagaimana menerapkannya saat menggambar gambar. Bagaimana cara mencapai hal ini?