QT4 2D
QT4 2D
绘图
绘图
张宾卡
张宾卡
概述
概述
►
Qt4
Qt4
中的
中的
2D
2D
绘图部分称为
绘图部分称为
Arthur
Arthur
绘图系统。它由
绘图系统。它由
3
3
个类支
个类支
撑整个框架,
撑整个框架,
QPainter
QPainter
,
,
QPainterDevice
QPainterDevice
和
和
QPainterEngine
QPainterEngine
。
。
►
QPainter
QPainter
用来执行具体的绘图相关操作如画点,画线,填充,
用来执行具体的绘图相关操作如画点,画线,填充,
变换,
变换,
alpha
alpha
通道等。
通道等。
►
QPainterDevice
QPainterDevice
是
是
QPainter
QPainter
用来绘图的绘图设备,
用来绘图的绘图设备,
Qt
Qt
中有
中有
几种预定义的绘图设备,如
几种预定义的绘图设备,如
QWidget
QWidget
,
,
QPixmap
QPixmap
,
,
QPrinter
QPrinter
等。他们都从
等。他们都从
QPaintDevice
QPaintDevice
继承。
继承。
►
QPaintEngine
QPaintEngine
类提供了不同类型设备的接口,
类提供了不同类型设备的接口,
QPaintEngine
QPaintEngine
对程序员不透明,由
对程序员不透明,由
QPainter
QPainter
,
,
QPaintDevice
QPaintDevice
类与其进行
类与其进行
交互。
交互。
►
从
从
Qt4.2
Qt4.2
开始,
开始,
Graphics View
Graphics View
框架取代了
框架取代了
QCanvas
QCanvas
,
,
QGr
QGr
aphics View
aphics View
框架使用了
框架使用了
MVC
MVC
模式,适合对大量
模式,适合对大量
2D
2D
图元的
图元的
管理,
管理,
Grphics View
Grphics View
框架中,场景
框架中,场景
(scene)
(scene)
存储了图形数据,
存储了图形数据,
它通过视图
它通过视图
(view)
(view)
以多种表现形式,每个图元
以多种表现形式,每个图元
(item)
(item)
可以单
可以单
独进行控制。
独进行控制。
Arthur
Arthur
绘图基础
绘图基础
►
在
在
Arthur
Arthur
绘图框架中的基本绘图元素是画笔,画刷。
绘图框架中的基本绘图元素是画笔,画刷。
►
QPainter
QPainter
类具有
类具有
GUI
GUI
程序需要的绝大多数函数,能够绘制基本图形
程序需要的绝大多数函数,能够绘制基本图形
(
(
点,
点,
线,矩形,多边形等
线,矩形,多边形等
)
)
以及复杂的图形
以及复杂的图形
(
(
如绘图路径
如绘图路径
)
)
。使用绘图路径
。使用绘图路径
(Q
(Q
PaintPath)
PaintPath)
的优点是复杂形状的图形之用生成一次,以后再使用的时候是
的优点是复杂形状的图形之用生成一次,以后再使用的时候是
需要调用
需要调用
QPainter::drawPath()
QPainter::drawPath()
就可以了。
就可以了。
QPainterPath
QPainterPath
对象可以用来填
对象可以用来填
充,绘制轮廓。
充,绘制轮廓。
►
线和轮廓都可以用画笔
线和轮廓都可以用画笔
(QPen)
(QPen)
进行绘制,画刷
进行绘制,画刷
(QBrush)
(QBrush)
进行填充。
进行填充。
►
1
1
、
、
画笔
画笔
定义了风格
定义了风格
(
(
线形
线形
)
)
,宽度,笔尖画刷以及端点是如何绘制的
,宽度,笔尖画刷以及端点是如何绘制的
(c
(c
ap-style)
ap-style)
,端点的连接方式
,端点的连接方式
(join-style)
(join-style)
。
。
►
2
2
、
、
画刷
画刷
用来填充画笔绘制的图形,可以定制不同的填充模式和颜色的画
用来填充画笔绘制的图形,可以定制不同的填充模式和颜色的画
刷。
刷。
►
3
3
、
、
字体
字体
使用
使用
QFont
QFont
类定义,当绘制文字时,
类定义,当绘制文字时,
Qt
Qt
使用指定字体的属性,
使用指定字体的属性,
如果没有匹配的字体,
如果没有匹配的字体,
Qt
Qt
将使用最接近的字体。字体属性可以通过
将使用最接近的字体。字体属性可以通过
QFo
QFo
ntInfo
ntInfo
来获取。字体的度量
来获取。字体的度量
(measurement)
(measurement)
使用
使用
QFontMetrics
QFontMetrics
类来获取。
类来获取。
QFontDatabase
QFontDatabase
类可以获得底层窗口系统所有可用的字体。
类可以获得底层窗口系统所有可用的字体。
►
4
4
、通常情况下
、通常情况下
QPainter
QPainter
以
以
默认的坐标系统
默认的坐标系统
进行绘制,也可以用
进行绘制,也可以用
QMatrix
QMatrix
类对坐标进行变换。
类对坐标进行变换。
►
当绘制时,可以使用
当绘制时,可以使用
QPainter::RenderHint
QPainter::RenderHint
来告诉
来告诉
绘图引擎是否启用
绘图引擎是否启用
反锯齿
反锯齿
功能使图变得平滑。
功能使图变得平滑。
►
QPainter::RenderHint
QPainter::RenderHint
的可取如
的可取如
►
QPainter::Antialiasing
QPainter::Antialiasing
告诉绘图引擎应该在
告诉绘图引擎应该在
可能的情况下进行边的反锯齿绘制
可能的情况下进行边的反锯齿绘制
►
QPainter::TextAntialiasing
QPainter::TextAntialiasing
尽可能的情况下文字
尽可能的情况下文字
的反锯齿绘制
的反锯齿绘制
►
QPainter::SmoothPixmapTransform
QPainter::SmoothPixmapTransform
使用平滑的
使用平滑的
pix
pix
map
map
变换算法
变换算法
(
(
双线性插值算法
双线性插值算法
),
),
而不是近邻插值
而不是近邻插值
算法
算法
QPainter
QPainter
的绘图函数
的绘图函数
►
drawArc()
drawArc()
弧
弧
►
drawChord()
drawChord()
弦
弦
►
drawConvexPolygon()
drawConvexPolygon()
凸多边形
凸多边形
►
drawEllipse()
drawEllipse()
椭圆
椭圆
►
drawImage() QImage
drawImage() QImage
表示
表示
的图像
的图像
►
drawLine()
drawLine()
线
线
►
drawLines()
drawLines()
多条线
多条线
►
drawPath()
drawPath()
路径
路径
►
drawPicture()
drawPicture()
按
按
QPainter
QPainter
指
指
令绘制
令绘制
►
drawPie()
drawPie()
扇形
扇形
►
drawPixmap() QPixmap
drawPixmap() QPixmap
表示
表示
的图像
的图像
►
drawPoint()
drawPoint()
点
点
►
drawPoints()
drawPoints()
多个点
多个点
►
drawPolygon()
drawPolygon()
多边形
多边形
►
drawPolyline()
drawPolyline()
多折线
多折线
►
drawRect()
drawRect()
矩形
矩形
►
drawRects()
drawRects()
多个矩形
多个矩形
►
drawRoundRect()
drawRoundRect()
圆角矩形
圆角矩形
►
drawText()
drawText()
文字
文字
►
drawTiledPixmap()
drawTiledPixmap()
平铺图像
平铺图像
►
drawLineSegments()
drawLineSegments()
绘制折线
绘制折线