gpt4 book ai didi

c++ - QT QGraphicsScene 将原点设置为左下角

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:41 24 4
gpt4 key购买 nike

我正在编写一个场景编辑器来编辑 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);

最佳答案

这是解决方案,至少对我而言是这样。

将 0,0 放在左下角 -

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

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

pi->setPos(iPosX, -iPosY);

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

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

关于c++ - QT QGraphicsScene 将原点设置为左下角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21116493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com