QLa*_*nds 20 qt projection qgraphicsview qgraphicsscene
我想在多边形中绘制多边形QGraphicsScene
但多边形具有纬度/经度位置.在一个equirectangular投影中,坐标来自:
^
90
|
|
-180----------------------------------->180
|
|
-90
Run Code Online (Sandbox Code Playgroud)
如何设置QGraphicsScene
/ QGraphicsView
到这样的投影?
非常感谢,
卡洛斯.
Ant*_*ony 20
使用QGraphicsScene::setSceneRect()
如下:
scene->setSceneRect(-180, -90, 360, 180);
Run Code Online (Sandbox Code Playgroud)
如果您担心垂直轴被错误翻转,您可以选择如何处理此问题.一种方法是,只要进行涉及y坐标的任何计算,就简单地乘以-1.另一种方法是垂直翻转QGraphicsView,view->scale(1, -1)
以便正确显示场景.
下面是一个使用后一种技术的工作示例.在示例中,我已经将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, -90, 360, 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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17806 次 |
最近记录: |