gpt4 book ai didi

c++ - QT 图形绘图,如何更改 QGraphicsView 的坐标系/几何图形

转载 作者:太空狗 更新时间:2023-10-29 20:27:19 27 4
gpt4 key购买 nike

我正在使用 QT 并尝试使用 QGraphicsView 和 QGraphicsScene 绘制图表..我不想要任何额外的依赖项,这就是我不使用 QWT 的原因。当我绘制我的数据时,此刻我使用

scene->drawLine(x1,y1,x2,y2,pen);

然后这会在 QGraphicScene 中的两点之间画一条线。但这使用左上角 x=0 y=0 系统...我想使用我自己的系统,如下图所示。另一个问题是我有从 -3 到 +3 的 double 值。有没有人对 QGraphicScene 和 QGraphicsView 有一些经验,可以告诉我如何完成这个?

enter image description here

最佳答案

尝试查看 QGraphicsView::setTransform .该矩阵定义了“场景坐标”如何转换为“ View 坐标”,这是图形编程中的一个常见概念。

还有一些方便的函数 scale()、rotate()、translate() 和 shear() 可以修改 View 的当前变换矩阵。

所以你可以这样做:

scale(1.0, -1.0); // invert Y axis

// translate to account for fact that Y coordinates start at -3
translate(0.0, 3.0);

// scale Y coordinates to height of widget
scale(1.0, (qreal)viewport()->size().height()/6.0);

并且由于这取决于小部件的大小,您还需要捕获任何调整大小事件并在那里再次重置转换矩阵。假设您希望“3”代表视口(viewport)顶部,“-3”代表底部。

关于c++ - QT 图形绘图,如何更改 QGraphicsView 的坐标系/几何图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16657053/

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