我正在使用 QT 并尝试使用 QGraphicsView 和 QGraphicsScene 绘制图表..我不想要任何额外的依赖项,这就是我不使用 QWT 的原因。当我绘制我的数据时,此刻我使用
scene->drawLine(x1,y1,x2,y2,pen);
然后这会在 QGraphicScene 中的两点之间画一条线。但这使用左上角 x=0 y=0 系统...我想使用我自己的系统,如下图所示。另一个问题是我有从 -3 到 +3 的 double 值。有没有人对 QGraphicScene 和 QGraphicsView 有一些经验,可以告诉我如何完成这个?
最佳答案
尝试查看 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/