首页 > 其他 > 详细

Graphics View绘图架构,理解1

时间:2021-01-11 11:56:54      阅读:21      评论:0      收藏:0      [点我收藏+]

在之前我采用的是Painnter进行绘图事件,采用Qpainnter绘图时需要在绘图设备的paintEvent()事件里编写绘图程序,实现整个绘图过程。这种方法如同在windows的画图软件在绘图,绘制的图形是位图,这种方法适合于复杂度不高的固定图形,不能实现图件的选择、编辑、拖放、和修改等功能。

Graphics View架构主要由三个部分组成,即视图、场景、图形项。网络上对于这三个部分的解释有很多,但都不是能很明显的表示,我说说我的理解。

  1. 视图(View):视图是显示场景的部分,视图相当于是,ui界面的物理边框,它的左上角坐标为(0,0)。当视图>场景时,场景在视图的中心位置显示;当视图<场景时,视图只能显示场景的部分内容,但是会自动提供卷滚条在整个场景内移动。
  2. 场景(scene):场景是显示图源的部分,场景相当于,ui界面的一个部件例如Layout,里面可以放置很多图形
    • 提供管理大量图形项的快速接口;
    • 将事件传播给每个图形项;
    • 管理每个图形项的状态、焦点状态等;
    • 管理未经变换的渲染功能,主要用于打印。
  3. 图形项(Item):就是一些基本的图形元件,以及鼠标的响应、键盘的输入、支持拖放、支持组合。

Graphics View坐标系统

Graphics View系统有三个有效的坐标系,图形项坐标、场景坐标、视图坐标。

  1. 图形项坐标:图形项使用自己的局部坐标,通常以其中心为(0,0),也是各种坐标变换的中心。
  2. 视图坐标:视图坐标就是窗口界面的物理坐标,单位是像素。视图坐标只与widget或视口有关,而与场景观察无关。视口的左上角坐标为(0,0)。所以的鼠标事件、拖放事件的坐标首先是由视图坐标定义的,然后用户需要将这些坐标映射为场景坐标,以便和图形项交互。
  3. 场景坐标:场景是所有图形的基础坐标,场景坐标描述了每个顶层图形项的位置。创建场景时可以定义场景矩形区的坐标范围,例如:scene = new QGraphicsScene(-400,-300,800,600);这样定义的scene的左上角坐标为(-400,-300)宽度为800,高度为600,的矩形区域,单位是像素。




Graphics View绘图架构,理解1

原文:https://www.cnblogs.com/houwenzhi/p/fcaa1a4ae2eb76408d7a18c1d26f6688.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!