Qt绘图与图形视图之Graphics View坐标系的简单介绍

往期回顾

Qt绘图与图形视图之基本图元绘制的简单介绍-CSDN博客

Qt绘图与图形视图之自定义图元实现拖拽、拉伸、旋转功能-CSDN博客

Qt绘图与图形视图之绘制带三角形箭头的窗口的简单介绍-CSDN博客

 Qt绘图与图形视图之Graphics View坐标系的简单介绍

一、Graphics View坐标系基本概念

Graphics View系统主要有3个坐标系,图形项坐标、场景坐标、视图坐标。

1、场景坐标

场景的坐标一般以场景的中心为原点:

场景是所有图形项的基础坐标,场景坐标(SceneCoordinates)描述了每个顶层图形项的位置。

创建场景时可以定义场景矩形区的坐标范围,例如:

scene = new QGraphicsScene( -400, -300, 800, 600);

这样定义的scene是左上角坐标为(-400,300),宽度为800,高度为600的矩形区域,单位是像素。

2、视图坐标,QGraphicsView

视图坐标与设备坐标相同,是物理坐标,缺省(默认)以左上角为原点;

QGraphicsView视口的左上角坐标总是(0,0),所有的鼠标事件、拖放事件的坐标首先是由视图坐标定义的,然后用户需要将这些坐标映射为场景坐标,以便和图形项交互。

3、图形项坐标

图形项坐标是局部逻辑坐标,一般以图件的中心为原点。

图形项使用自己的局部坐标,通常以其中心为(0,0),也是各种坐标变换的中心。

图形项的鼠标事件的坐标是用局部坐标表示的,创建自定义图项,绘制图形项时只需考虑其局部坐标.

一个图形项的位置是其中心点在父坐标系统中的坐标,对于没有父图形项的图形项,父对象就是场景,图形项的位置就是在场景中的坐标。

如果一个图形项还是其他图形项的父项,父项进行坐标变换时,子项也做同样的坐标变换。QGraphicsltem的大多数函数都是在其局部坐标系上操作的。

示例:

例如一个图形项的边界矩形QGraphicsltem::boundingRect()是用局部坐标给出的,但是QGraphicsltem::pos()是仅有的几个例外,它返回的是图形项在父项坐标系中的坐标,如果是顶层图形项,就是在场景中的坐标

4、坐标映射

在场景中操作图形项时,进行场景到图形项、图形项到图形项,或视图到场景之间的坐标变换是比较有用的。

例如在QGraphicsView的视口,上单击鼠标时,通过函QGraphicsView::mapToScene()可以将视图坐标映射为场景坐标,然后用QGraphicsScene::itemAt()函数可以获取场景中鼠标光标处的图形项。


以上就是Qt里Graphics View坐标系的简单介绍。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值