本章将主要简述Graphics View框架结构的特点、主要包含的元素及坐标系统。
1、Graphics View框架结构的特点:
(1)系统可以利用Qt绘图系统的反锯齿、OpenGL工具来改善绘图性能。
(2)其支持事件传播结构,可以使图元在场景中的交互能力提高一倍,凸缘可以处理键盘事件和鼠标事件。
(3)通过BSP提供快速的图元查找,可以实现实时显示包含数百万图元的大场景。
2、Graphics View的三元素:
(1)场景类(QGraphicsScene):本身不可见,是一个放置图元的容器必须通过与之相连的视图类来显示及与外界进行 互操作。通过QGraphicsScene::addItem()来添加图元。
QGraphicsScene::items()和一些重载函数能够返回和点、矩形、多边形或向量路径相交的所有图元。
QGraphicsScene::itemAt()返回指定点的最顶层图元。
QGraphicsScene::setSelectedAreas()函数选择图元,选择区域可以是任意的形状,使用QPainterpath表示。
QGraphicsScene::selectedItems()函数得到当前选择的图元列表。
QGraphicsScene::setFocusItem()函数或QGraphicsScene::setFocus()函数来设置图元的焦点。
QGraphicsScene::focusItem()函数获得当前具有焦点的图元。
QGraphicsScene::reader()函数在绘图设备上绘制场景。
(2)视图类(QGraphicsView):提供一个可视的窗口用于显示场景中的图元。其是可滚动的窗口部件,可以提供滚动条来浏览大的场景。
QGraphicsView::setViewport将视图设置为QGLWidget。
QGraphicsView::matrix()可以变换场景的坐标,实现场景缩放和旋转。
QGraphicsView::mapToScene()和QGraphicsView::mapFromScene()用于场景的坐标进行转换。
(3)图元类(QGraphicsItem):它是场景中各个图元的基类,在她的基础上可以继承出各种图元类,
包括直线(QGraphicsLineItem)、椭圆(QGraphicsEllipseItem)、文本图元(QGraphicsTextItem)、矩形(QGraphicsRectItem)等。
3、QGraphicsView的坐标系统:
基于笛卡尔积坐标系,一个图元的场景具有X坐标和Y坐标。
(1)场景坐标:是所有图元的基础坐标系统。
(2)视图坐标:是窗口部件的坐标。视图坐标的单位是像素。
(3)图元坐标:图元使用自己的本地坐标,这个坐标系统通常以图元中心为原点,这也是所有变换的原点。