当前位置:C++技术网 > 资讯 > MFC窗口渐变背景绘制代码实现

MFC窗口渐变背景绘制代码实现

更新时间:2015-06-23 15:42:54浏览次数:1+次

    在OnEraseBkgnd中放置如下代码即可实现背景渐变色。此函数是WM_ERASEBKGND消息的响应函数。1是水平和垂直的渐变,只要注释其中一个即可,另一个不注释。2则与1独立,因为斜向渐变采用的是划线,垂直和水平是画矩形,因此不一样。最后一定要返回TRUE,不让系统再重画背景,表示你已经处理了这个消息,否则你所有工作白费了。

CRect rect;
GetClientRect(&rect);
int height = rect.bottom;
int width = rect.right;

//水平渐变和垂直渐变共有代码
//声明存储255个画刷指针的数组,每一个画刷一种颜色,可以使颜色过渡非常平滑
CBrush* pbrush[255]={0};
//创建255个画刷,在RGB宏中,可以自己指定颜色,可以自己任意改变,颜色在0-255范围内
for (int i=0;i<255;i++)
pbrush[i] = new CBrush(RGB(20,200,i));

//垂直渐变,去掉注释即可显示垂直渐变效果
//for (int i=0;i<height;i++)
//{
// 
//    rect.SetRect(0,i,width,i+1);
//    pDC->FillRect(rect,pbrush[255*i/height]);
//}

//水平渐变
for (int i=0;i<width;i++)//确定宽度,然后从左到右依次渐变
{
    rect.SetRect(i,0,i+1,height);//每次确定一个矩形,然后给矩形填充颜色
    pDC->FillRect(rect,pbrush[255*i/width]);//用指定的画刷填充颜色
}

//水平渐变和垂直渐变共有代码
for (int i=0;i<255;i++)//删掉所有的画刷对象
delete pbrush[i];

    代码段的每一部分都加了简要的说明,程序思路就不说了,自己仔细阅读以下,就能够明白。目的是让读者能够主动点学习,不要复制粘贴就完事了。如果把程序的逻辑看懂,你还能够发挥的更多。
万一不懂,可以留言。