我正在尝试绘制一个简单的几个矩形并存储结果,我只需要绘制一次。因此,保持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);
}
我将该函数调用一次,并在计时器I BitBlt()hdcBackground中调用HDC屏幕。当我测试它时,它绘制两个矩形,带有1px边框(因为笔设置为),但没有颜色,它只是黑色和白色。
刷子等都很好,只是我没有颜色。刷子上的RGB是(25,25,25)和(65,65,65),深灰色。
有什么想法吗? 感谢。