扩展辐射渐变类的构造函数原型:
QRadialGradient(const QPointF ¢er, qreal centerRadius, const QPointF &focalPoint, qreal focalRadius)
---Constructs an extended radial gradient with the given center, centerRadius, focalPoint, and focalRadius.
【译文:构造一个扩展的辐射渐变,中心圆的圆点是center,半径是centerRadius;焦点圆的圆心focalPoint,半径focalRadius。】
--- Extended radial gradients interpolate colors between a focal circle and a center circle. Points outside the cone defined by the two circles will be transparent.
【译文:扩展的辐射渐变,在焦点圆和中心圆之间插入颜色。由两个圆定义的锥形之外的点变成透明的,即不会被填充。】
下面就用一个示例,构造一个扩展辐射渐变对象,插入三个颜色红黄蓝,观察渐变效果。
实现的代码:
void Widget::paintEvent(QPaintEvent *e)
{
const int r = 200;
QPainter painter(this);
//将坐标系原点移动到窗体的中心
painter.translate(width()/2,height()/2);
painter.setPen(QPen(Qt::black));
/*创建一个扩展辐射渐变对象,对象的构造函数需要中心圆和焦点圆的圆心和半径做参数。
中心圆的圆心是QPointF(-r/2,-r/2), 半径是r/2。
焦点圆的圆心是QPointF(r/2,r/2), 半径是r/4。 */
QRadialGradient radialGradient(QPointF(-r/2,-r/2),r/2,QPointF(r/2,r/2),r/4);
//从焦点圆到中心圆方向,依次插入三个颜色红、黄、蓝
radialGradient.setColorAt(0.2, Qt::red);
radialGradient.setColorAt(0.5, Qt::yellow);
radialGradient.setColorAt(0.8, Qt::blue);
//将扩展辐射渐变对象作为画刷的构造函数参数,创建画刷
QBrush brush(radialGradient);
//将画刷添加到画家
painter.setBrush(brush);
//绘制一个圆,圆心在原点,半径为r,观察扩展辐射渐变的效果
painter.drawEllipse(QPoint(0,0),r,r);
}