首页 > 其他分享 >QGraphicsScene和QGraphicsView坐标系统

QGraphicsScene和QGraphicsView坐标系统

时间:2023-09-07 23:45:03浏览次数:36  
标签:QGraphicsView 场景 QGraphicsScene scene 视图 坐标 100 图形

 

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

场景坐标
场景坐标等价于QPainter的逻辑坐标,一般以场景中心为原点;视图坐标与设备坐标相同,是物理坐标,默认为左上角为原点;图形项的坐标是局部逻辑坐标,一般以图形项的中心为原点。

一个图形项的位置是其中心点在父坐标中的坐标,对于没有父图形项的图形项,其父对象就是场景,图形项的位置就是在场景中的坐标。如果一个图形项还是其他图形项的父项,那么父项进行坐标转换的时候,子项也做同样的坐标转换。

视图坐标
视图坐标就是窗口界面的物理坐标,单位是像素。视图坐标只与widget或视口有关,而与观察的场景无关,左上角坐标为(0,0)

场景坐标
场景是所有图形项的基础坐标,场景坐标描述了每个顶层图形项的位置,创建场景时可以定义矩形区域的坐标范围。

_scene = new QGraphicsScene(-100, -100, 200, 200);
1
这样就定义了一个左上角坐标为(-100,-100)宽度为200,高度为200 的矩形区域,单位是像素

QGraphicsView是用于观察一个场景的物理窗口,当场景小于视图时,整个场景在视图中可见;当场景大于视图时,视图自动提供滚条。

示例代码:

ui.graphicsView->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
_scene = new QGraphicsScene(-100, -100, 200, 200);
ui.graphicsView->setScene(_scene);

QPen pen;
pen.setWidth(2);
pen.setColor(QColor(255, 0, 0));

_scene->setBackgroundBrush(QBrush(Qt::gray));

_scene->addLine(-100, 0, 100, 0, pen);
_scene->addLine(0, -100, 0, 100, pen);
_scene->addEllipse(-25, -25, 50, 50, pen);
1
2
3
4
5
6
7
8
9
10
11
12
13

————————————————
版权声明:本文为CSDN博主「wb175208」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wb175208/article/details/106484256

 

from: https://blog.csdn.net/wb175208/article/details/106484256

标签:QGraphicsView,场景,QGraphicsScene,scene,视图,坐标,100,图形
From: https://www.cnblogs.com/im18620660608/p/17686384.html

相关文章

  • Qt 图形视图框架<三>——<坐标系统>
    Qt图形视图框架<三>——<坐标系统> 一基础知识 图形视图框架是基于笛卡尔坐标系统的,一个图形项在场景中的位置和几何形状由x坐标和y坐标来表示。当使用一个没有变换的视图来观察场景时,场景中的一个单元代表屏幕上的一个像素。图形视图框架的三个坐标系分别是视图......
  • QGraphicsView父类中MouseMove和MouseButtonRelease事件获取办法
    QGraphicsView是QT支持的一套图元显示框架。最近在开发过程中发现一个问题,在QGraphicsView父类(QWidget)中重载mousePressEvent和mouseMoveEvent事件,只能获取到mousePress事件,mouseMove事件不论如何都获取不到,测试代码如下,为了方便测试将布局的Margin设置成了20。发现在Margin区域......
  • 【230908-3】同一直角坐标系中,分别作函数y=1/a^x,y=loga_(x-1/2)(a>0且a≠1)的图像如
    ......
  • ElasticSearch系列——查询、Python使用、Django/Flask集成、集群搭建,数据分片、位置
    @目录Elasticsearch之-查询一基本查询1.1match查询1.2term查询1.3terms查询1.4控制查询的返回数量(分页)1.5match_all查询1.6match_phrase查询1.7multi_match1.8指定返回的字段1.9sort结果排序1.10range范围查询1.11wildcard查询二组合查询2.1bool查询2.2简单过滤......
  • 视觉SLAM十四讲 3.6.2实际的坐标转换的例子
    在这一讲中,作者没有给出详细的过程,作为初学者还是有点懵。这道题是有两种解法的四元数解法欧拉矩阵解法四元数解法假设一个目标点\(p\)在世界坐标系下的坐标是\[P_W\]利用四元数表示旋转,两个小萝卜坐标系下\(p\)点坐标有如下公式:\[p_1=q_1*P_w+t_1\\p_2=q......
  • 小谈Qt的坐标系系统 - 3个坐标系,2个变换
    小谈Qt的坐标系系统Qt中有三个坐标系设备坐标系窗口坐标系逻辑坐标系设备坐标系:即Device坐标系。也是物理坐标系。即真实的的物理坐标系。逻辑坐标系:即用户坐标系。也就是说日常大家使用Qt的时候的坐标系。窗口坐标系:这个坐标系是QPainter设置setWindow以后的一个坐......
  • QT坐标系转换(将QPainter左上角为原点的坐标系转换为正常坐标系)
    没有复杂的变换,简单转化窗口坐标系,即可按我们正常熟知的坐标系进行绘图QPainter坐标系以左上角为原点,如下图 在这样的坐标系下绘图,位置这是倒过来的QPainterm_pPainter(this);   m_pPainter.setBrush(Qt::yellow);   m_pPainter.drawRect(0,0,50,50);   m......
  • sketchup 动态组件 旋转 失灵 -- 两个坐标轴不同
    sketchup动态组件旋转失灵 使用sketchup做了一个门,使用了旋转z轴功能,然后把组件门放入另一个组件中,结果只能开门,不能关门,反复重复开门动作反复常识查找谷歌了半天没有结果后来发现 原来时外组件的坐标轴和内组件的坐标轴不一致调整内外组件坐......
  • 【matplotlib基础】--坐标轴
    Matplotlib的坐标轴是用于在绘图中表示数据的位置的工具。坐标轴是图像中的水平和垂直线,它们通常表示为x轴和y轴。坐标轴的作用是帮助观察者了解图像中数据的位置和大小,通常标有数字或标签,以指示特定的值在图像中的位置。1.坐标轴范围Matplotlib绘制图形时,会自动根据X,Y轴......
  • 坐标文本转图片
    坐标文本格式类似101112341155#脚本文件importmatplotlib.pyplotaspltimportnumpyasnpx=[]y=[]withopen('message.txt','r')asf:datas=f.readlines()fordataindatas:arr=data.split('')x.app......