QT QGraphicsScene将原点设置为左下角

时间:2014-01-14 14:50:26

标签: c++ qt

我正在编写一个场景编辑器来编辑iphone游戏的关卡。 iphone / ipad环境中的原点是显示屏的左下角。

如何在QGraphicsScene对象中正确移动原点? 我试过

// iWidth and iHeight are maximum scene dimension values
pScene->setSceneRect(0, iHeight, iWidth, iHeight);

但这不起作用。

如果不去复杂(至少对我来说)变换矩阵,我应该如何移动原点?

编辑:

根据要求,这里是我如何创建场景并向其添加图像的简历:

// Creation of the Scene within a QMainWindow derived class
QGraphicsScene* m_pScene = new QGraphicsScene(this);
ui->levelScene->setScene(m_pScene);

// insertion of the background png image
QPixmap* pm = new QPixmap(strFileName, 0);
QGraphicsPixmapItem* pi = new QGraphicsPixmapItem();
pi->setPixmap(*pm);
m_pScene->addItem(pi);

// adjustment of the layout
m_pScene->setSceneRect(0, iHeight, iWidth, iHeight);

// add a movable png image to the scene above the background
pm = new QPixmap(*g_pChoData->m_pcDirImages + "/" + pChoElem->m_Image, 0);
pi = new QGraphicsPixmapItem();
pi->setPixmap(*pm);
pi->setPos(iPosX, iPosY);
pi->setZValue(iPosZ);
pi->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
m_pScene->addItem(pi);

1 个答案:

答案 0 :(得分:1)

这是解决方案,至少在我的情况下。

将0,0放在左下角 -

m_pScene->setSceneRect(0, -iHeight, iWidth, iHeight);

然后,插入场景的所有图像都需要调整其Y位置:

pi->setPos(iPosX, -iPosY);

导致我出现问题的最后一个小技巧是图像的客户参考点是图像的中心而不是角落。

感谢所有在此提供帮助的人。