gpt4 book ai didi

c++ - Qt4 : QGraphicsScene/View and custom transformation method?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:23 25 4
gpt4 key购买 nike

我知道可以在 Qt 中使用仿射变换。但是是否也可以设置一个完整的自定义全局转换方法呢?

用例:在地理坐标中绘制投影地理点(纬度、经度)或检索鼠标事件等(在 QGraphicsScene/View 的上下文中)。

目前我是这样使用它的(一点点伪代码):

MyPoint pt = myProjection(geographicPoint);
QPoint(pt.x, pt.y);

// or, to make it shorter, but essentially it's the same
QPoint p = myProjection(geoPoint);

geoPoint = myBackProjection(mouseEvent.getPoint());

我想在某处“注册”我的转换方法,以便 QGraphicsView(或负责的人)在屏幕上绘制内容之前在内部使用这些方法。

或者这既没有意义(因为它会在我不期望的地方引入问题,例如在计算距离时)也不可能吗?

最佳答案

QGraphicsView 使用 QTransform 矩阵,它是一个 3x3 矩阵。因此你只能做线性变换。在 Qt5/QtQuick 中或使用 QtQuick3d您可以使用 QML ShaderProgram 实现此目的。

在“纯”Qt4 中,您必须从 QGraphicsView、QAbstractScrollArea 或 QGraphicsScene 中派生您自己的自定义类,并覆盖绘制方法。

关于c++ - Qt4 : QGraphicsScene/View and custom transformation method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8816142/

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