当前位置:天才代写 > tutorial > C语言/C++ 教程 > Qt进修之路(25):QPainter(续)

Qt进修之路(25):QPainter(续)

2017-11-05 08:00 星期日 所属: C语言/C++ 教程 浏览:499

副标题#e#

首先照旧要先把上次的代码拿上来。

void PaintedWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawLine(80, 100, 650, 500);
painter.setPen(Qt::red);
painter.drawRect(10, 10, 100, 400);
painter.setPen(QPen(Qt::green, 5));
painter.setBrush(Qt::blue);
painter.drawEllipse(50, 150, 400, 200);
}

上次我们说的是Qt画图相关的架构,以及QPainter的成立和drawXXXX函数。可以看到,根基上代码中已经设计到得函数还剩下两个:setPen()和setBrush()。此刻,我们就要把这两个函数讲授一下。

Qt画图系统提供了三个主要的参数配置,画笔(pen)、画刷(brush)和字体(font)。这里我们要说明的是画笔和画刷。

所谓画笔,是用于绘制线的,好比线段、表面线等,都需要利用画笔绘制。画笔类即QPen,可以配置画笔的样式,譬喻虚线、实现之类,画笔的颜色,画笔的转折点样式等。画笔的样式可以在建设时指定,也可以由setStyle()函数指定。画笔支持三种主要的样式:笔帽(cap),团结点 (join)和线形 (line)。这些样式详细显示如下(图片来自C++ GUI Programming with Qt4, 2nd Edition):

Qt学习之路(25):QPainter(续)

上图共分成三行:第一行是Cap样式,第二行是Join样式,第三行是Line样式。QPen答允你利用setCapStyle()、setJoinStyle()和setStyle()别离举办配置。详细请介入API文档。

所谓画刷,主要用来填充关闭的几许图形。画刷主要有两个参数可供配置:颜色和样式。虽然,你也可以利用纹理可能渐变色来填充图形。请看下面的图片(图片出自Qt API 文档):

Qt学习之路(25):QPainter(续)


#p#副标题#e#

这里给出了差异style的画刷的表示。同画笔雷同,这些样式也可用通过一个enum举办配置。

大白了这些之后我们再来看看我们的代码。首先,我们直接利用drawLine()函数,由于没有配置任何样式,所以利用的是默认的1px,,玄色,solid样式画了一条直线;然后利用setPen()函数,将画笔配置成Qt::red,即赤色,画了一个矩形;最后将画笔配置成绿色,5px,画刷配置成蓝色,画了一个椭圆。这样便显示出了我们最终的样式:

Qt学习之路(25):QPainter(续)

别的要说明一点,请留意我们的绘制顺序,首先是直线,然后是矩形,最后是椭圆。这样,因为椭圆是最后画的,因此在最上方。

在我们进修OpenGL的时候,必定听过这么一句话:OpenGL是一个状态机。所谓状态机,就是说,OpenGL生存的只是各类状态。怎么领略呢?好比,你把颜色配置成赤色,那么,直到你从头配置别的的颜色,它的颜色会一直是赤色。QPainter也是这样,它的状态不会本身规复,除非你利用了各类set函数。因此,假如在上面的代码中,我们在椭圆绘制之后再画一个椭圆,它的样式还会是绿色5px的表面和蓝色的填充,除非你显式地挪用了set 举办更新。这大概是画图系统较多的实现方法,因为无论是OpenGL、QPainter照旧Java2D,都是这样实现的(DirectX不大清楚)。

出处:http://devbean.blog.51cto.com/448512/235851

 

    关键字:

天才代写-代写联系方式