基本内容来自:http://blog.csdn.net/c__allen/article/details/7704359,我自己加了渐变部分,没有解决缩放重绘问题,除非在onsize中invalide();
CPaintDC dc(this);
CRect rect;
CDC *pDC = &dc;
CDC memDC;
GetClientRect(&rect);
CBitmap memBitmap;
memDC.CreateCompatibleDC(NULL);
memBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
memDC.SetBkMode(TRANSPARENT);
memDC.SelectObject(&memBitmap);
COLORREF bkColor = ::GetSysColor(COLOR_3DFACE);//得到系统颜色
memDC.FillSolidRect(rect.left, rect.top, rect.Width(), rect.Height(), bkColor);//绘制背景
memDC.FillSolidRect(rect.left, rect.bottom - 40, rect.Width(), rect.Height(), RGB(80, 80, 80));
/*
int r1 = 128, g1 = 200, b1 = 200;
int r2 = 100, g2 = 55, b2 = 165;
for (int i = 0; i < rect.Width(); i++){
int r, g, b;
r = r1 + (i * (r2 - r1) / rect.Width());
g = g1 + (i * (g2 - g1) / rect.Width());
b = b1 + (i * (b2 - b1) / rect.Width());
memDC.FillSolidRect(i, 0, 1, rect.Height(), RGB(r, g, b));
}*/
pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
ReleaseDC(pDC);