- // Centre the bitmap in the control area
- int x1 = x + (width - wBmp) / 2;
- int y1 = y + (height - hBmp) / 2;
-
- if ( isSelected && autoDraw )
- {
- x1++;
- y1++;
- }
-
- BOOL ok;
- wxMask *mask = bitmap->GetMask();
- if ( mask )
- {
- // the fg ROP is applied for the pixels of the mask bitmap which are 1
- // (for a wxMask this means that this is a non transparent pixel), the
- // bg ROP is applied for all the others
-
- wxColour colBg = GetBackgroundColour();
- HBRUSH hbrBackground =
- ::CreateSolidBrush(RGB(colBg.Red(), colBg.Green(), colBg.Blue()));
- HBRUSH hbrOld = (HBRUSH)::SelectObject(hDC, hbrBackground);
-
- ok = ::MaskBlt(
- hDC, x1, y1, wBmp, hBmp, // dst
- memDC, 0, 0, // src
- (HBITMAP)mask->GetMaskBitmap(), 0, 0, // mask
- MAKEROP4(SRCCOPY, // fg ROP
- PATCOPY) // bg ROP
- );
-
- ::SelectObject(hDC, hbrOld);
- ::DeleteObject(hbrBackground);
- }
- else
- {
- ok = ::BitBlt(hDC, x1, y1, wBmp, hBmp, // dst
- memDC, 0, 0, // src
- SRCCOPY); // ROP
- }
-
- if ( !ok )
- {
- wxLogLastError(_T("Mask/BitBlt()"));
- }
+ // draw the bitmap
+ wxDC dst;
+ dst.SetHDC((WXHDC) hDC, FALSE);
+ dst.DrawBitmap(*bitmap, x1, y1, TRUE);