Qt 图形视图框架(QGraphicsView, QGraphicsScene, QGraphicsItem)坐标系 您所在的位置:网站首页 scene和view Qt 图形视图框架(QGraphicsView, QGraphicsScene, QGraphicsItem)坐标系

Qt 图形视图框架(QGraphicsView, QGraphicsScene, QGraphicsItem)坐标系

2024-06-09 19:50| 来源: 网络整理| 查看: 265

 

1. QGraphicsView架构学习总结(1) - 知乎 (zhihu.com)

2. 如何认识Qt GraphicsView的坐标体系-百度经验 (baidu.com)

3. Qt中QGraphics类坐标映射关系详解 - cthu - 博客园 (cnblogs.com)

 

【笔记】:

1. 视图(view)、场景(scene)、图元(item)三者的坐标系:

1)视图坐标系与主窗体的逻辑坐标相同,以窗体左上角为原点(0,0),x 向右为正,y 向下为正。

2)场景坐标系以场景中心为原点。

  setSceneRect 函数设置了视图中的场景坐标系某点到视图原点的映射,及场景尺寸。

3)图元坐标系以图元中心为原点。

  3.1)QGraphicsItem::boundingRect 函数确定以图元原点为中心,图元的绘制范围:

    QRectF(-radius - penWidth / 2, -radius - penWidth / 2, diameter + penWidth, diameter + penWidth);

  3.2)setPos 函数设置图元在场景中的位置(基于场景坐标系),pos 和 scenePos 函数返回图元位置(基于场景坐标系)。

4)默认情况:

  4.1)默认图元原点与场景原点重合。

  4.2)当场景(图元)尺寸小于视图尺寸时,默认场景原点(即中心)位于视图中心。

  //4.3)当场景(图元)尺寸大于视图尺寸时,默认场景原点(即中心)位于视图中心。

 

2.1 用法示例1:

假设有一个200*200的图元,设置视图尺寸: view->resize(400, 400);设置场景坐标系某点(0, 0)到视图原点(0, 0)的映射,及场景尺寸: scene->setSceneRect(0, 0, 400, 400);设置图元原点位置: item->setPos(0, 0);

 

2.2 用法示例2:

假设有一个200*200的图元,设置视图尺寸:view->resize(400, 400);设置场景坐标系某点(-200, -200)到视图原点(0, 0)的映射,及场景尺寸:scene->setSceneRect(-200, -200, 400, 400);设置图元原点位置:item->setPos(0, 0);

 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有