GraphicsView使用(待完善)

QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,Graphics View框架实现了模型-视图结构的图形管理,能对大量图元进行管理,支持碰撞检测,坐标变换和图元组等多种方便的功能。

GraphicsView框架结构主要包含三个主要的类QGraphicsScene(场景)、QGraphicsView(视图)、QGraphicsItem(图元)。QGraphicsScene本身不可见,是一个存储图元的容器,必须通过与之相连的QGraphicsView视图来显示及与外界进行交互,主要提供图元的操作接口、传递事件和管理各个图元状态,提供无变换的绘制功能(如打印);QGraphicsView提供一个可视的窗口,用于显示场景中的图元,一个场景中可以有多个视图。QGraphicsItem是场景中各个图元的基础类,QT提供了常用图形图元的标准类,如矩形(QGraphicsRectItem)、椭(QGraphicsEllipseItem)、文本(QGraphicsTextItem)。

GraphicsView是一个基于图元的Model/View架构的框架,每一个组件都是一个独立的元素。QPainter采用面向过程的描述方式绘图;GraphicsView采用面向对象的描述方式绘图。GraphicsView绘图时首先创建一个场景,然后创建图元对象(如一个直线对象、一个多边形对象),再使用场景的add()函数,将图元对象添加到场景中,最后通过视图进行显示。对于复杂的图像来说,如果图像包含大量的直线、曲线、多边形等图元对象,管理图元对象比管理QPainter的绘制过程语句要容易,并且图元对象更符合面向对象的思想,图形的可复用性更好。

  Graphics View框架实现了模型-视图结构的图形管理,能对大量图元进行管理,支持碰撞检测,坐标变换和图元组等多种方便的功能。        

一、GraphicsView框架结构主要包含三个主要的类:

类一:QGraphicsScene:本身不可见,是一个存储图元的容器,必须通过与之相连的QGraphicsView视图 来显示及与外界进行交互;主要提供图元的操作接口、传递事件和管理各个图元状态,提供无变换的绘制功。
类二:QGraphicsView:提供一个可视的窗口,用于显示场景中的图元,一个场景中可以有多个视图。
类三:QGraphicsItem:是场景中各个图元的基础类,QT提供了常用图形图元的标准类,如矩形(QGraphicsRectItem)、 文本(QGraphicsTextItem)。

GraphicsView 采用面向对象的描述方式绘图,步骤概况如下:

步骤一、首先创建一个场景,
步骤二、然后创建图元对象(如一个直线对象、一个多边形对象),
步骤三、再使用场景的add()函数,将图元对象添加到场景中,
步骤四、最后通过视图进行显示 (一般用法是通过接口 setScene (QGraphicsScene&)绑定一个Scene对象)

对于复杂的图像来说,如果图像包含大量的直线、曲线、多边形等图元对象,管理图元对象比管理QPainter的绘制过程语句要容易,并且图元对象更符合面向对象的思想,图形的可复用性更好。

二、QGraphicsScene场景

QGraphicsScene场景是QGraphicsItem对象的容器,主要功能如下:
          A、提供管理大量图元的快速接口
          B、传播鼠标、键盘等事件给场景中的每个图元
          C、管理图元状态,如图元选择和焦点处理
          D、提供无变换的渲染功能,如打印  
          .......


三、QGraphicsView视图

QGraphicsView是视图窗口部件,使场景内容可视化,可以连接多个视图到一个场景,也可以为相同数据源的数据集提供不同的视图。可以提供滚动条来浏览大的场景。        

四、QGraphicsItem图元

QGraphicsItem是图元的基类。QGraphics View框架提供了多种标准的图元:
QGraphicsEllipseItem  椭圆图元 
QGraphicsLineItem     直线图元
QGraphicsPathItem     路径图元
QGraphicsPixmapItem   图像图元
QGraphicsPolygonItem  多边形图元
QGraphicsRectItem     矩形图元
QGraphicsSimpleTextItem 简单文本图元
QGraphicsTextItem     文本浏览图元    

用户可以继承QGraphicsItem实现自定义的图元。

QGraphicsItem图元主要特性如下:      

A、支持鼠标按下、移动、释放、双击、悬停、滚动和右键菜单事件。    
B、支持键盘输入焦点和按键事件     
C、支持拖拽事件    
D、支持分组,使用父子关系和QGraphicsItemGroup    
E、支持碰撞检测  

五、GraphicsView坐标系统   

Graphics View坐标系基于笛卡尔坐标系,图元的场景中的位置和几何形状通过x坐标和y坐标表示。
当使用没有变换的视图观察场景时,场景中的一个单位对应屏幕上的一个像素。    
Graphics View架构中有三个有效的坐标系统,图元坐标、场景坐标和视图坐标。
Graphics View提供了三个坐标系统之间的转换函数。在绘制图形时,QGraphics View的场景坐标对应QPainter的逻辑坐标,
QGraphics View的视图坐标对应QPainter的设备坐标。

六、QPainter绘图的主要属性

主要绘制一些基本图形元素(点、直线、圆形、矩形、曲线、文字),控制这些绘图元素特性的主要是QPainter的3个属性:
 

pen属性:是一个QPen对象,用于控制线条的颜色、宽度、线型
brush属性:是一个QBrush对象,用于一个区域的填充特性,可以设置填充颜色、填充方式、渐变特性等
font属性:是一个QFont对象,用于绘制颜色的时候,设置文字的字体样式、大小属性

注:使用3个属性基本控制绘图的基本特点,还有其他功能可结合使用:叠加 旋转和缩放

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Star星屹程序设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值