专业编程基础技术教程

网站首页 > 基础教程 正文

Qt辐射渐变QRadialGradient类构造函数2的用法

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

Qt的辐射渐变类QRadialGradient在构造上,分为简单辐射渐变(simple radial gradient)和扩展辐射渐变(extended radial gradient)。

简单辐射渐变又有两种构造函数:

Qt辐射渐变QRadialGradient类构造函数2的用法

(1)QRadialGradient::QRadialGradient(qreal cx, qreal cy, qreal radius);

---Constructs a simple radial gradient with the center at (cx, cy) and the specified radius. The focal point lies at the center of the circle.

【译文】:构造一个简单辐射渐变对象,中心位于(cx,cy),半径为radius, 焦点位于圆心处。

这部分的测试,之前已在头条发布,此处省略。


(2)QRadialGradient(const QPointF &center, qreal radius, const QPointF &focalPoint);

Constructs a simple radial gradient with the given center, radius and focalPoint.

【译文】:构造一个简单辐射渐变,中心圆点是点center,半径是Radius;焦点圆的圆心是focalPoint,焦点圆的半径没有出现参数里。

本文测试第二个构造函数,先看测试结果:


改写的paintEvent( QPaintEvent *e)函数:

void Widget::paintEvent(QPaintEvent *e)

{

const int r =200;

QPainter painter(this);

//将坐标系原点平移到窗体的中心

painter.translate(width()/2, height()/2);

//创建一个简单辐射渐变对象,圆心位于原点,半径为r;焦点圆圆心为(r/2.0,r/2.0)。

QRadialGradient radialGradient(QPointF(0,0),r,QPointF(r/2.0,r/2.0));

//从焦点开始,往中心圆圆心方向,依次插入蓝色、白色和黑色。

radialGradient.setColorAt(0.0, Qt::blue);

radialGradient.setColorAt(0.3, Qt::white);

radialGradient.setColorAt(0.6, Qt::black);

//创建画刷,传入简单辐射渐变对象作为画刷构造函数的参数

QBrush brush(radialGradient);

painter.setPen(Qt::NoPen);

//将画刷添加到画家

painter.setBrush(brush);

//绘制一个圆心位于原点、半径为r的圆,观察渐变效果

painter.drawEllipse(QPoint(0, 0), r, r);

//也可以绘制一个左上角坐标为(-2r,-2r),边长为4r的正方形观察

//painter.drawRect(-2*r,-2*r,4*r,4*r);

}

小结:本文示范了简单辐射渐变第二种构造函数的用法。在画刷的样式设置中,渐变样式是相对比较复杂一点的方式。使用渐变色,可以美化部件的外观。

最近发表
标签列表