C ++ Win32绘制到DC并保持它

时间:2013-08-08 04:43:57

标签: c++ winapi bitmap gdi

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

有什么想法吗? 感谢。

0 个答案:

没有答案