item scene view 坐标映射
理论说明:
经常,处理场景中item时,在场景与item之间,item与item之间,视图与场景之间进行坐标映射,形状映射是非常有用的。举例来讲,当你在QGraphicsView的视口中点击鼠标时,你应该通过调用QGraphicsView::mapToScence()与QGraphicsScene::itemAt()来获知光标下是场景中的哪个item。假如你想获知一个item位于视口中的什么位置,你应该先在item上调用QGraphicsItem::mapToScene(),然后调用QGraphicsView::mapFromScene()。最后,假如你想在一个视图椭圆中有哪些items,你应该把QPainterPath传递到mapToScene(),然后再把映射后的路径传递到QGraphicsScene::items()。
实例:
自己将item,scene,view的坐标映射做了个例子,参照来看更好理解:
图1为绿色矩形框在不同坐标系下的坐标
图1. VIEW没有缩放时的坐标值
图2所示为将VIEW进行缩放显示,图像大小适应于窗口大小显示时的坐标值
图2.按窗口大小适配图像显示时的坐标值
从上面两个图很好理解三者之间的坐标关系了。