1《嵌入式GUI程序设计》——Qt5图形与图片(第六章)教学回顾•Qt内置对话框(重点)•Qt工具盒;•Qt进度条;•Qt调色板;•Qt可扩展对话框2教学内容•Qt绘制事件•Qt2D绘图•画笔•画刷•基本图形和文本绘制•渐变填充•绘制文本•图像处理•坐标系统与坐标变换•绘图举例:表盘34Qt绘制事件事件处理和绘制(Painting)•当应用程序收到绘制事件时,就会调用QWidget::paintEvent(),该函数就是绘制窗口的地方•有两种方法要求重绘一个窗口–update()–把重绘事件添加到事件队列中•重复调用update()会被Qt合并为一次•不会产生图像的闪烁•可带参数指定重绘某个区域–repaint()–立即产生绘制事件•一般情况下不推荐使用此方法•只使用在需要立即重绘的特效情况下•可带参数指定重绘某个区域5事件处理和绘制(Painting)•为处理绘制事件,只需要重写paintEvent函数,并在该函数中实例化一个QPainter对象进行绘制6classMyWidget:publicQWidget{...protected:voidpaintEvent(QPaintEvent*);voidMyWidget::paintEvent(QPaintEvent*ev){QPainterp(this);...基本绘制•QPainter类提供绘制操作其构造函数原型为:QPainter(QPaintDevice*device)•QPaintDevice代表绘制2D图像的画布•如下继承QPaintDevice的类对象都可用于QPainter绘制–QWidget,QImage,QPixmap,QPicture,QPrinter,QSvgGenerator,QGLPixelBuffer,QGLFrameBufferObject,...78Qt2D绘图QT2D绘图•Qt中的2D绘图部分,由3个类支撑整个框架:–QPainter用来执行具体的绘图相关操作如画点,画线,填充,变换,alpha通道等。–QPaintDevice是QPainter用来绘图的绘图设备,Qt中有几种预定义的绘图设备,如QWidget,QPixmap,QImage等。他们都从QPaintDevice继承。9QPainter•线和轮廓都可以用画笔(QPen)进行绘制,用画刷(QBrush)进行填充。•字体使用QFont类定义,当绘制文字时,Qt使用指定字体的属性,如果没有匹配的字体,Qt将使用最接近的字体•通常情况下,QPainter以默认的坐标系统进行绘制,也可以用QMatrix类对坐标进行变换10QPainter•当绘制时,可以使用QPainter::RenderHint来告诉绘图引擎是否启用反锯齿功能使图变得平滑•QPainter::RenderHint的可取值–QPainter::Antialiasing:告诉绘图引擎应该在可能的情况下进行边的反锯齿绘制–QPainter::TextAntialiasing:尽可能的情况下文字的反锯齿绘制–QPainter::SmoothPixmapTransform:使用平滑的pixmap变换算法(双线性插值算法),而不是近邻插值算法11QPainter的绘图函数•drawArc()弧•drawChord()弦•drawConvexPolygon()凸多边形•drawEllipse()椭圆•drawImage()QImage表示的图像•drawLine()线•drawLines()多条线•drawPath()路径•drawPicture()按QPainter指令绘制•drawPie()扇形•drawPixmap()QPixmap表示的图像•drawPoint()点•drawPoints()多个点•drawPolygon()多边形•drawPolyline()多折线•drawRect()矩形•drawRects()多个矩形•drawRoundRect()圆角矩形•drawText()文字•drawTiledPixmap()平铺图像•drawLineSegments()绘制折线1213画笔画笔•画笔的属性包括线型、线宽、颜色等。画笔属性可以在构造函数中指定,也可以使用setStyle(),setWidth(),setBrush(),setCapStyle(),setJoinStyle()等函数设定•Qt中,使用Qt::PenStyle定义了6种画笔风格,分别是–Qt::SolidLine,Qt::DashLine,Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine。–自定义线风格(Qt::CustomDashLine),需要使用QPen的setDashPattern()函数来设定自定义风格。14线型•Qt::SolidLine•Qt::DashLine•Qt::DotLine•Qt::DashDotLine•Qt::DashDotDotLine•Qt::CustomDashLine–由dashPattern控制15画笔•端点风格(capstyle)–端点风格决定了线的端点样式,只对线宽大于1的线有效。–Qt定义了三种端点风格用枚举类型Qt::PenCapStyle表示,分别为Qt::SqureCap,QT::FlatCap,Qt::RoundCap。•连接风格(Joinstyle)–连接风格是两条线如何连接,连接风格对线宽大于等于1的线有效。–Qt定义了四种连接方式,用枚举类型Qt::PenStyle表示。分别是Qt::MiterJo...