QPainter和QGraphcisView的区别理解:
1、 QPainter
2、 QGraphicsView
3、 QPainter和QGraphicsView区别的理解
4、QGraphicsView框架基本原理
QPainter:
1、 QPainter用于“画”出图形,这里我为什么要把画打上引号呢?因为这里可以把QPainter想象成一支笔,用这个工具在纸上画出图像过后,对于整个纸张来说,画出来的东西就是不可移动的。
2、 且用这个工具画出来的图像一般都复杂度不高。
3、因此QPainter工具主要用于画出简单,不可移动的图像。即画出图像过后,纸上所画出来的东西就不能移动了。
QGraphicsView:
1、 按照官方文件来讲,QGraphicsView是一种模型–视图结构的图形管理工具。可以对单个图元进行管理操作。
2、能做的操作,进行碰撞检测,坐标变换,图元的选择,编辑,移动等。
QPainter和QGraphicsView区别的理解:
针对两者的区别可以从编程的角度来理解;
QPainter:是一种面向过程的工具,即用这个工具画出的图,是绘制出一个过程,即从坐标(0,0)到坐标(200,300)画出一条直线。一旦画出来来过后,整个事件就完成了。图形就一直在那里。比如你在纸上用铅笔画出来一条直线,如果把白纸作为背景,那么画出来的直线就不可以移动
QGraphicsView:可以理解为一种面向对象的工具,QGraphicsView工具是一种将直线,圆,椭圆,矩形等各种形状作为一个个配件,而编程者需要做的是利用这些配件,组装出自己想要的图像,这些配件是可以被操作的,其中的操作包括,旋转,移动,放大,缩放,选择等等,就不像QPainter的那样----画出来即是固定。所以QGraphicsView更像是一种可供用户DIY的玩具。可以用来组装这些部件。比如搭积木,用方块,圆,长方体,拱形等,搭建出来一个复杂的更大更精细的物件。
QGraphicsView框架基本原理:
QGraphicsView的框架
QGraphicsScene
场景本身不可见,是一个抽象的管理图元,图形项的容器,可以向场景中添加图元,获取某个图元。
1.管理大量图元的接口。
2.传播事件到场景中的单一或者所有图元。
3.提供未经变换的渲染功能,用于打印。
4.管理图元状态,如图元选择和焦点处理。
#### QGraphicsView 为场景中提供绘图的视图软件,用于显示场景中的内容,可以为一个场景设置几个视图,用于对同一个数据集提供不同的观察方式。
#### QGraphicsItem 提供基本的图形元件,支持事件响应,如鼠标事件,键盘事件,拖放事件,以实现图形的交互事件。
坐标系统
1.场景坐标
即以设置的场景的左上角为原点(0,0)
2.视图坐标
窗口界面的物理坐标,单位是像素,左上角为原点坐标,所有事件最开始都使用视图坐标,为了和图元交互,需要转换为场景坐标。
3.图形坐标
通常以图元的中心为原点,图元中心也是所有坐标变换的原点,坐标系方向向上。