分列渐变
void CMyDlg::Redraw(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
CDC dcBAK;
CBitmap map;
dcBAK.CreateCompatibleDC(pDC);
map.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
CBitmap*poldbmp=dcBAK.SelectObject(&map);
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());
dcBAK.FillSolidRect(i,0,1,rect.Height(),RGB(r,g,b));
}
//----------绘画
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcBAK,0,0,SRCCOPY);
dcBAK.SelectObject(poldbmp);
}
对角渐变
void CMyDlg::Redraw(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
CDC dcBAK;
CBitmap map;
dcBAK.CreateCompatibleDC(pDC);
map.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
CBitmap*poldbmp=dcBAK.SelectObject(&map);
CPen pen;
dcBAK.FillSolidRect(0, 0, rect.Width(), rect.Height(),RGB(255, 255, 255));
int r1=66,g1=59,b1=215;
int r,g,b;
for(int i=0;i<rect.Width()+rect.Height() / 2;i++)
{
r = r1 + (i * 189 / (rect.Width()+rect.Height() / 2));
g = g1 + (i * 196 / (rect.Width()+rect.Height() / 2));
b = b1 + (i * 40 / (rect.Width()+rect.Height() / 2));
pen.DeleteObject();
pen.CreatePen(PS_SOLID,1,RGB(r,g,b));
dcBAK.SelectObject(&pen);
dcBAK.MoveTo(i, 0);
dcBAK.LineTo(0, i);
}
//----------绘画
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcBAK,0,0,SRCCOPY);
dcBAK.SelectObject(poldbmp);
}