我想在QGraphicsScene中绘制多边形,但是多边形具有纬度/经度位置。在等角投影中,坐标来自:
^ 90 | | -180----------------------------------->180 | | -90
如何将QGraphicsScene / QGraphicsView设置为这样的投影?
非常感谢,
卡洛斯。
解决方法
使用QGraphicsScene :: setSceneRect()像这样:
scene->setSceneRect(-180,-90,360,180);
如果您担心垂直轴不正确地翻转,您有几个选项可以解决这个问题。一种方法是在进行涉及y坐标的任何计算时,简单地乘以-1。另一种方法是使用view-> scale(1,-1)垂直翻转QGraphicsView,以使场景正确显示。
以下是使用后一种技术的工作示例。在该示例中,我已经将QGraphicsScene进行子类化,以便您可以在视图中单击,自定义场景将使用qDebug()显示点击位置。实际上,实际上并不需要对QGraphicsScene进行子类化。
#include <QtGui> class CustomScene : public QGraphicsScene { protected: void mousePressEvent(QGraphicsSceneMouseEvent *event) { qDebug() << event->scenePos(); } }; class MainWindow : public QMainWindow { public: MainWindow() { QGraphicsScene *scene = new CustomScene; QGraphicsView *view = new QGraphicsView(this); scene->setSceneRect(-180,180); view->setScene(scene); view->scale(1,-1); setCentralWidget(view); } }; int main(int argc,char *argv[]) { QApplication a(argc,argv); MainWindow w; w.show(); return a.exec(); }