15,979
社区成员
发帖
与我相关
我的任务
分享
// 响应WM_PAINT消息
void Window::onPaint(HDC dc)
{
// 创建内存兼容DC,准备双缓冲
HDC hMemDC = CreateCompatibleDC(dc);
RECT rc;
GetClientRect(m_hWnd, &rc);
HBITMAP hMemBitMap = CreateCompatibleBitmap(dc, rc.right, rc.bottom);
SelectObject(hMemDC, hMemBitMap);
// 根据内存DC创建GDI+绘制对象
Gdiplus::Graphics graphics(hMemDC);
// 设置反走样
graphics.SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);
// 清理背景
Gdiplus::SolidBrush brush(Gdiplus::Color(m_r, m_g, m_b));
graphics.FillRectangle(&brush, 0,0, rc.right, rc.bottom);// 关键是这句
// 绘制控件
// 复制到目标DC
BitBlt(dc, 0, 0, rc.right, rc.bottom, hMemDC, 0, 0, SRCCOPY);
DeleteDC(hMemDC);
}