0

我正在尝试绘制几个简单的矩形并存储结果,我只需要绘制一次。因此,将 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),深灰色。

有任何想法吗?谢谢。

4

0 回答 0