Qt 2D绘图 下载本文

圆形渐变:

1.更改函数内容如下:

QRadialGradient radialGradient(200,100,100,200,100);

//其中参数分别为圆形渐变的圆心(200,100),半径100,和焦点(200,100) //这里让焦点和圆心重合,从而形成从圆心向外渐变的效果 radialGradient.setColorAt(0,Qt::black); radialGradient.setColorAt(1,Qt::yellow);

//渐变从焦点向整个圆进行,焦点为起始点0,圆的边界为1 QPainter painter(this);

painter.setBrush(radialGradient); painter.drawEllipse(100,0,200,200);

//绘制圆,让它正好和上面的圆形渐变的圆重合 效果如下:

2.要想改变填充的效果,只需要改变焦点的位置和渐变的颜色位置即可。 改变焦点位置:QRadialGradient radialGradient(200,100,100,100,100);

效果如下:

锥形渐变:

1.更改函数内容如下:

//圆锥渐变

QConicalGradient conicalGradient(50,50,0); //圆心为(50,50),开始角度为0

conicalGradient.setColorAt(0,Qt::green); conicalGradient.setColorAt(1,Qt::white); //从圆心的0度角开始逆时针填充 QPainter painter(this);

painter.setBrush(conicalGradient); painter.drawEllipse(0,0,100,100); 效果如下:

2.可以更改开始角度,来改变填充效果

QConicalGradient conicalGradient(50,50,30);

开始角度设置为30度,效果如下:

Qt 2D绘图(三)绘制文字

接着上一次的教程,这次我们学习在窗体上绘制文字。 1.绘制最简单的文字。 我们更改重绘函数如下:

void Dialog::paintEvent(QPaintEvent *) {

QPainter painter(this);

painter.drawText(100,100,”yafeilinux”); }

我们在(100,100)的位置显示了一行文字,效果如下。

2.为了更好的控制字体的位置。我们使用另一个构造函数。在帮助里查看drawText,如下。

这里我们看到了构造函数的原型和例子。其中的flags参数可以控制字体在矩形中的位置。我们更改函数内容如下。

void Dialog::paintEvent(QPaintEvent *) {

QPainter painter(this); QRectF ff(100,100,300,200); //设置一个矩形

painter.drawRect(ff);

//为了更直观地看到字体的位置,我们绘制出这个矩形 painter.setPen(QColor(Qt::red)); //设置画笔颜色为红色

painter.drawText(ff,Qt::AlignHCenter,”yafeilinux”); //我们这里先让字体水平居中 }

效果如下。

可以看到字符串是在最上面水平居中的。如果想让其在矩形正中间,我们可以使用Qt::AlignCenter。

这里我们也可以使用两个枚举变量进行按位与操作,例如可以使用

Qt::AlignBottom|Qt::AlignHCenter实现让文字显示在矩形下面的正中间。效果如下。

对于较长的字符串,我们也可以利用“\\n”进行换行,例如”yafei\\nlinux”。效果如下。

3.如果要使文字更美观,我们就需要使用QFont类来改变字体。先在帮助中查看一下这个类。