分类: LINUX
2011-05-20 12:54:01
渐变,是指逐渐的,有规律性的变化,是一种规律性很强的现象。提供了一个与渐变相关的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);//在相应的坐标画出来 |