Qt绘制2d

本文详细介绍了Qt中的2D绘图系统,包括QPainter、QPainterDevice和QPainterEngine的作用。讲解了QPainter的基本绘图元素,如画笔、画刷的属性设置,以及使用QPainterPath进行复杂图形的绘制。此外,还探讨了双缓冲绘图、Alpha通道支持以及使用QImage和QPixmap作为绘图设备的优势。文章最后讨论了坐标系统、坐标变换和字体使用,强调了Qt的Graphics View框架在2D图形管理中的应用。
摘要由CSDN通过智能技术生成

2D绘图 
Qt4
中的2D绘图部分称为Arthur绘图系统.它由3个类支撑整个框架,QPainter,QPainterDeviceQPainterEngine.QPainter用来执行具体的绘图相关操作如画点,画线,填充,变换,alpha通道等。QPainterDeviceQPainter用来绘图的绘图设备,Qt中有几种预定义的绘图设备,如QWidget,QPixamp,QPrinter.他们都从QPaintDevice继承。QPaintEngine类提供了不同类型设备的接口,QPaintEngine对程序员不透明,由QPainter,QPaintDevice类与其进行交互。
Qt4.2开始,Graphics View框架取代了QCanvas,QGraphics View框架使用了MVC模式,适合对大量2D图元的管理,Grphics View框架中,场景(scene)存储了图形数据,它通过视图(view)以多种表现形式,每个图元(item)可以单独进行控制.
Arthur
绘图基础

Arthur绘图框架中的基本绘图元素是画笔,画刷。
QPainter
类具有GUI程序需要的绝大多数函数,能够绘制基本图形(点,线,矩形,多边形等)以及复杂的图形(如绘图路径).使用绘图路径(QPaintPath)的优点是复杂形状的图形之用生成一次,以后再使用的时候是需要调用QPainter::drawPath()就可以了。QPainterPath对象可以用来填充,绘制轮廓。
线和轮廓都可以用画笔(QPen)进行绘制,画刷(QBrush)进行填充。画笔定义了风格(线形),宽度,笔尖画刷以及端点是如何绘制的(cap-style),端点的连接方式(join-style)
.
画刷用来填充画笔绘制的图形,可以定制不同的填充模式和颜色的画刷。

当绘制文字时,字体使用QFont类定义,Qt使用指定字体的属性,如果没有匹配的字体,Qt将使用最接近的字体。字体属性可以通过QFontInfo来获取。

字体的度量(measurement)
使用QFontMetrics类来获取。QFontDatabase类可以获得底层窗口系统所有可用的字体.
通常情况下QPainter以默认的坐标系统进行绘制,也可以用QMatrix类对坐标进行变换。

当绘制时,可以使用QPainter::RenderHint来告诉绘图引擎是否启用饭锯齿功能使图变得平滑。
QPainter::RenderHint
的可取如表6-1中的值
------------------------------------
QPainter::Antialiasing          
告诉绘图引擎应该在可能的情况下进行边的反锯齿绘制
QPainter::TextAntialiasing      
尽可能的情况下文字的反锯齿绘制
QPainter::SmoothPixmapTransform 
使用平滑的pixmap变换算法(双线性插值算法),而不是近邻插值算法
------------------------------------
QPainter
的绘图函数 
------------------------------------
drawArc()                                

drawChord()                              

drawConvexPolygon()                      
凸多边形
drawEllipse()                            
椭圆
drawImage()                               QImage
表示的图像
drawLine()                               
线
drawLines()                              
多条线
drawPath()                               
路径
drawPicture()                            
QPainter指令绘制
drawPie()                                
扇形
drawPixmap()                              QPixmap
表示的图像
drawPoint()                              

drawPoints()                             
多个点
drawPolygon()                            
多边形
drawPolyline()                           
多折线
drawRect()                               
矩形
drawRects()                              
多个矩形
drawRoundRect()                          
圆角矩形
drawText()                               
文字
drawTiledPixmap()                        
平铺图像
drawLineSegments

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值