簡體   English   中英

QT Graph繪圖,如何更改QGraphicsView的坐標系/幾何

[英]QT Graph plotting, how to change coordinate system/geometry of QGraphicsView

我正在使用QT並嘗試使用QGraphicsView和QGraphicsScene來繪制圖形。我不想要任何其他依賴項,這就是為什么我不使用QWT。 當我繪制我的數據時,在我使用的那一刻

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

然后,這將在QGraphicScene中的2個點之間划一條線。 但這使用左上角x = 0 y = 0系統...我想使用我自己的系統,如下圖所示。 另一個問題是我有從-3到+ 3的雙倍值。有任何人對QGraphicScene和QGraphicsView有一些經驗並且可以告訴我如何才能實現這一目標?

在此輸入圖像描述

嘗試查看QGraphicsView :: setTransform 該矩陣定義了如何將“場景坐標”轉換為“視圖坐標”,這是圖形編程中的常見概念。

還有便利函數scale(),rotate(),translate()和shear(),它們修改了視圖的當前變換矩陣。

所以你可以這樣做:

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”表示視口的頂部,“-3”表示底部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM