我正在尝试绘制几个简单的矩形并存储结果,我只需要绘制一次。因此,将 HDC (hdcBackround) 保持在“全局”的顶部。
void drawBackground(HWND hwnd) { // hwnd is the main windows handle
// dimensions
RECT rect;
GetWindowRect(hwnd, &rect);
HDC hWinDC = GetDC(hwnd);
hdcBackground = ::CreateCompatibleDC(hWinDC); // "global"
HBITMAP hbm = ::CreateCompatibleBitmap(hWinDC, rect.right, rect.bottom);
::SelectObject(hdcBackground, hbm);
SetBkMode(hdcBackground, TRANSPARENT);
SelectObject(hdcBackground, hFont[HF_DEFAULT]);
SelectObject(hdcBackground, hBrush[HB_TOPBG]);
SelectObject(hdcBackground, hPen[HP_THINBORDER]);
// draw
Rectangle(hdcBackground, 0, 0, rect.right, 20);
SelectObject(hdcBackground, hBrush[HB_LOWBG]);
Rectangle(hdcBackground, 50, 20, rect.right, 40);
// ??? clean up after it works
ReleaseDC(hwnd, hWinDC);
}
我调用该函数一次,并在计时器中将 BitBlt() hdcBackground 调用到屏幕 HDC。当我测试它时,它绘制了两个矩形,边框为 1px(因为笔设置为),但没有颜色,它只是黑色和白色。
刷子之类的都很好,只是我没有上色。画笔上的 RGB 为 (25,25,25) 和 (65,65,65),深灰色。
有任何想法吗?谢谢。