qt – 如何将QGraphicsScene/View设置为特定的坐标系

前端之家收集整理的这篇文章主要介绍了qt – 如何将QGraphicsScene/View设置为特定的坐标系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在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();
}
原文链接:https://www.f2er.com/css/218739.html

猜你在找的CSS相关文章