Qt 游戏场景 & 图元

一:Graphics View框架主要特点

1、 Graphics View框架结构中可以利用QT绘图系统的反锯齿、OpenGL(硬件加速)工具改善绘图性能。

2、 Graphics View框架支持事件传播体系结构,使场景内的图元交互能力提高一倍。图元处理鼠标键盘事件,如鼠标按下、移动、释放、点击和双击事件,也跟踪鼠标移动。QWItget

3、在Graphics View框架中通过二元空间划分树,提供快速的图元查找,这样能实时的显示大场景。

二:Graphics View框架

Graphics View框架结构主要包含了场景类(QGraphicsScene(容器))、视图类 (QGraphicsView)和图元类(QGraphicsItem)。

三:QGraphicsScene

QGraphicsScene类为管理大量的2D图形item提供了一个管理界面,做为item的容器,它配合使用QGraphicsView使用来观察items,例如线,矩形,文本或者自定义的items 。

注意:QGraphicsScene场景没有自己可见的外观,他只管理items,需要创建一个QGraphicsView Widget来让场景可见。

四:QGraphicsView

QGraphicsView提供一个显示QGraphicsScene内容的窗口,在构造时候把场景对象作为参数,或者之后使用setScene()来设置view的场景,该框架还包含一个事件传递机制,允许画布和画布上的图元之间精确地双向交互。图元处理鼠标键盘事件,如鼠标按下、移动、释放、点击和双击事件,也跟踪鼠标移动。

五:实例

实例1:

QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show();

实例2:

QGraphicsView view;
QGraphicsScene scene;
Scene. setSceneRect();
View. setScene(scene);

虚函数void resizeEvent(QResizeEvent *event); 

六:QGraphicsScene坐标系统

七:QGraphicsView坐标

QGraphicsView 类继承自QWidget类,因此它和其他的QWidget类一样以窗口的左上角作为自己坐标系的原点。 

八:QGraphicsItem

QGraphicsItem类是视图框架的一部分,是在一个QGraphicsScene中最基本的图形类,它为绘制你自己的item提供了一个轻量级的窗口,包括声明item的位置,碰撞检测,绘制重载和item之间的相互作用通过事件处理  

九:QGraphicsItem的系统派生

Qt提供了一系列标准的items对一些常见的图像,非常的方便,有下面这些:

QGraphicsEllipseItem  提供一个椭圆item
QGraphicsLineItem     提供一条线的item
QGraphicsPathItem     提供一个任意的路径item
QGraphicsPixmapItem   提供一个图形item
QGraphicsPolygonItem  提供一个多边形item
QGraphicsRectItem     提供一个矩形item
QGraphicsSimpleTextItem 提供一个简单的文本item
QGraphicsTextItem     提供一个文本浏览item

十:自己派生QGraphicsItem

写自己的item图形,首先应该继承QGraphicsItem,然后重写他的两个纯虚公共函数,boundingRect()和paint(),第一个函数返回绘制item大概的区域,第二个函数用来绘制item内容

十一:坐标系

QGraphicsItem则有自己的坐标系,在调用QGraphicsItem类的paint()函数重画项目时是以此坐标系为基准。 

猜你喜欢

转载自blog.csdn.net/m0_56051805/article/details/127197671