渐变,是指逐渐的,有规律性的变化,是一种规律性很强的现象。Qt提供了一个与渐变相关的QGradient类,目前支持三种渐变画刷,分别是线性渐变(QLinearGradient)、辐射渐变(QRadialGradient)、角度渐变(QConicalGradient),如下图所示:
从左到右依次为:线性渐变、辐射渐变、角度渐变
下面来看一下实现的代码,由于程序较简单,所以将解释都加在了每行代码的后边:
1.线性渐变QLinearGradient
1
2
3
4
5
6
7
8
9
10
11
| QPainter painter(this);//创建了一个QPainter对象实例
painter.setRenderHint(QPainter::Antialiasing, true);//消除锯齿
QLinearGradient linearGradient(20,20, 150, 150);
//创建了一个QLinearGradient对象实例,参数为起点和终点坐标
linearGradient.setColorAt(0.2, Qt::white);
linearGradient.setColorAt(0.4, Qt::blue);
linearGradient.setColorAt(0.6, Qt::red);
linearGradient.setColorAt(1.0,Qt::yellow);
//上面的四行分别设置渐变的颜色和路径比例
painter.setBrush(QBrush(linearGradient));//将linearGradient对象传递给画刷
painter.drawEllipse(10,10, 150, 150);//在相应的坐标画出来 |
2.辐射渐变QRadialGradient
1
2
3
4
5
6
| QRadialGradient radialGradient(275,85,75,275,85);
//创建了一个QRadialGradient对象实例,参数分别为中心坐标,半径长度和焦点坐标
radialGradient.setColorAt(0,Qt::black);
radialGradient.setColorAt(1.0,Qt::green);//设置渐变的颜色和路径比例
painter.setBrush(QBrush(radialGradient));
painter.drawEllipse(200,10,150,150);//在相应的坐标画出来 |
3.角度渐变QConicalGradient
1
2
3
4
5
6
| QConicalGradient conicalGradient(465,85,10);
//创建了一个QConicalGradient对象实例,参数分别为中心坐标和初始角度
conicalGradient.setColorAt(0,Qt::white);
conicalGradient.setColorAt(0.8,Qt::blue);//设置渐变的颜色和路径比例
painter.setBrush(QBrush(conicalGradient));
painter.drawEllipse(390,10,150,150);//在相应的坐标画出来 |
转载地址:http://www.awuit.com/qt-study-notes-gradient-fill/