• 6503阅读
  • 13回复

Scene坐标问题 [复制链接]

上一主题 下一主题
离线hope_yh
 

只看楼主 正序阅读 楼主  发表于: 2010-02-02
我知道在graphicsview中左上角为QPoint(0,0),可以通过mapToScene(QPoint(0,0))拿到它的Scene坐标,有谁知道Scene左上角的坐标位置是多少?
离线hope_yh

只看该作者 13楼 发表于: 2010-02-03
谢谢,我已解决了这个问题,正如你们所说item的scene坐标未变,我最后通过mapFromScene拿出了viewport的坐标。
离线sbtree
只看该作者 12楼 发表于: 2010-02-03
简单的说,缩放功能是qt内部使用的坐标系统的比例尺进行改变,例如x轴上的一个单元是用一个m个像素表达的,放大2倍以后,可能用2*m个像素表达,而对于坐标而言,依然是1个单元,此一个单元和彼一个单元看上去当然大小就不一样的了,而Item的位置始终是原来的坐标值
windows 7 + VC++2008 + Qt4.5.2
离线hope_yh

只看该作者 11楼 发表于: 2010-02-03
那么怎么得到它的变化后的位置
离线dbzhang800

只看该作者 10楼 发表于: 2010-02-03
引用第9楼hope_yh于2010-02-03 09:16发表的  :
为什么底片(scene)是不变,我如何拿到缩放后的item的位置呢

缩放前后item在scene中的位置并没有变化, 在 view 中的显示位置是变化的
离线hope_yh

只看该作者 9楼 发表于: 2010-02-03
为什么底片(scene)是不变,我如何拿到缩放后的item的位置呢
离线dbzhang800

只看该作者 8楼 发表于: 2010-02-03
举个不太恰当的例子,可以简单类比照片底片。

你冲洗4寸照片和7寸大小肯定是不同的,但是底片(scene)不变
离线hope_yh

只看该作者 7楼 发表于: 2010-02-03
基于上面的第三点,在tem缩放之后,从它的pos函数取得的位置仍是缩放之前的位置。
基于上面的第一点,我用的QGraphicsView的缩放功能,为什么不影响item在其中的位置呢,我感觉item的长宽
都按比例缩放,它的位置肯定不是缩放前的位置了(相对于Scene来说)。
离线sbtree
只看该作者 6楼 发表于: 2010-02-02
不太明白楼主的问题,
第一,不知道你用的缩放方法,QGraphicsView已经提供了缩放功能,如果你是用这个,他并不影响Item在其中的位置
第二,如果使用自定义的缩放方法,自然要对Item尺寸进行改变,改变多少,代码中肯定是可知的
第三,任何一个Item都可以根据它的pos函数取得位置,要注意一点的是位置不等同于你看到的图形的最上角的位置,而在于你绘制Item时候用的坐标
第四,Item的boundingRect函数明确规定了绘制的Item的范围,可以重写该函数改变它
第五,了解其他相关的函数,例如item的shape,mapToX, mapFromX等
windows 7 + VC++2008 + Qt4.5.2
离线hope_yh

只看该作者 5楼 发表于: 2010-02-02
换个问题说吧,就是如何求出在scene中经过缩放后的item位置。
离线hope_yh

只看该作者 4楼 发表于: 2010-02-02
情况是这样的,一开始的item位置是知道的,后来缩放了,item也会随着变大变小,每个item的位置就不知道了,我想知道scene的左上角位置坐标+item的缩放后的宽度*此item的行数 = item的x坐标位置,y坐标类似。
离线dbzhang800

只看该作者 3楼 发表于: 2010-02-02
item 位置不是由你自己指定的么? (默认情况下item坐标系统和scene坐标系统重合)

scene 的sceneRect 大小不也是自己指定么?(默认情况下 包含你的所有item的大小)

题外,不妨多看manual
离线hope_yh

只看该作者 2楼 发表于: 2010-02-02
graphicsscene里面有挺多item,那么排列在第一个的item的位置(即graphicsScene的左上角的位置)是怎么知道的
离线dbzhang800

只看该作者 1楼 发表于: 2010-02-02
无穷大
快速回复
限100 字节
 
上一个 下一个