Невозможно создать монохромное растровое изображение из HBITMAP, полученного с помощью GDI + Bitmap :: GetHBITMAP

Я не могу создать монохромную маску для цветного изображения 24BPP с помощью SetBkColor ()> BitBlt [SRCCOPY]. Маска оказывается полностью черной. Все работает, только если вместо этого я использую LoadImage () для получения HBITMAP.

Bitmap img(L"Ball.bmp");
HBITMAP hBM;
img.GetHBITMAP(Color::White, &hBM);
//hBM = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BALL));
.
.
SelectObject(hDCSrc, hBM);
SetBkColor(RGB(0xFF, 0xFF, oxFF));
BitBlt(hDCMem, 0, 0, img.GetWidth(), img.GetHeight(), hDCSrc, 0, 0, SRCCOPY);

//hDCMem is copletely black; but OK when using LoadImage() instead

Другие люди с той же проблемой предложили использовать Graphics :: GetHDC и сделать необходимое с этим DC в качестве временного решения. Но почему не работает как надо.

Даже этот обходной шум работает. Пожалуйста помоги :(


person Ujjwal Singh    schedule 01.01.2011    source источник


Ответы (1)


Решил: Как создать монохромная битовая маска для 32-битного растрового изображения

person Ujjwal Singh    schedule 02.01.2011