专业编程基础技术教程

网站首页 > 基础教程 正文

Qt的扩展辐射渐变(extended radial gradient)构造函数运用

ccvgpt 2024-08-03 12:38:34 基础教程 9 ℃

扩展辐射渐变类的构造函数原型:

QRadialGradient(const QPointF ¢er, qreal centerRadius, const QPointF &focalPoint, qreal focalRadius)

Qt的扩展辐射渐变(extended radial gradient)构造函数运用

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

}

最近发表
标签列表