transparentes bitmap
-
hoi,
habe Anhand von der Microsofts Lösung aus Q79212 über
void DrawTransparentBitmap(HDC hdc, HBITMAP hBitmap, int xStart, int yStart,
COLORREF cTransparentColor);versucht ein transparentes Bitmap zeichnen zu lassen. Allerdings bekomme ich nur einen schwarzen Kasten in der Größe des Bitmaps.
Wenn ich zuvor normal das Bitmap per BitBlt zeichne geht es ohne Probleme, nur halt ohne transparenz.
Hier mein Code:
case WM_CREATE: hBmp = (HBITMAP) LoadImage( NULL , "unit.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); break; case WM_PAINT: hDC = BeginPaint(hwnd, &ps); hdcMem = CreateCompatibleDC(hDC) ; SelectObject(hdcMem, hBmp) ; DrawTransparentBitmap(hDC, hBmp, 100, 200, 0x00FF00FF ); BitBlt(hDC, 200, 200, 13, 13, hdcMem, 0, 0, SRCCOPY );Irgendwelche Ideen woran es liegen könnte.
-
1.) Rufst du am Ende in WM_PAINT auch noch brav EndPaint auf?!
2.) Wenn du DrawTransparentBitmap verwendest solltest du das Bitmap nicht vorher in einen anderen DC selektieren! CreateCompatibleDC, SelectObject und BitBlt also einfach weglassen
-
jo danke.
p.s. an EndPaint lags nicht das hatte ich

-
Noch einer der das gleiche Problem hat wie ich. Bei mir war genau das gleiche
-
Klappt es denn jetzt
Wenn nicht - wie sieht dein jetziger Code aus?