窗体背景颜色渐变

分列渐变

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);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值