1. 程式人生 > 其它 >Qt 圖形檢視框架(QGraphicsView, QGraphicsView, QGraphicsItem)座標系

Qt 圖形檢視框架(QGraphicsView, QGraphicsView, QGraphicsItem)座標系

 

1. QGraphicsView架構學習總結(1) - 知乎 (zhihu.com)

2. 如何認識Qt GraphicsView的座標體系-百度經驗 (baidu.com)

3. Qt中QGraphics類座標對映關係詳解 - cthu - 部落格園 (cnblogs.com)

 

【筆記】:

1. 檢視(view)、場景(scene)、圖元(item)三者的座標系:

1)檢視座標系與主窗體的邏輯座標相同,以窗體左上角為原點(0,0),x 向右為正,y 向下為正。

2)場景座標系以場景中心為原點。

  setSceneRect 函式設定了檢視中的場景座標系某點到檢視原點的對映,及場景尺寸。

3)圖元座標系

以圖元中心為原點。

  3.1)QGraphicsItem::boundingRect 函式確定以圖元原點為中心,圖元的繪製範圍:

    QRectF(-radius - penWidth / 2, -radius - penWidth / 2, diameter + penWidth, diameter + penWidth);

  3.2)setPos 函式設定圖元在場景中的位置(基於場景座標系),posscenePos 函式返回圖元位置(基於場景座標系)。

4)預設情況:

  4.1)預設圖元原點與場景原點重合。

  4.2)當場景(圖元)尺寸小於檢視尺寸時,預設場景原點(即中心)位於檢視中心

  //4.3)當場景(圖元)尺寸大於檢視尺寸時,預設場景原點(即中心)位於檢視中心。

 

2.1 用法示例1:

假設有一個200*200的圖元,
設定檢視尺寸:
view->resize(400, 400);
設定場景座標系某點(0, 0)到檢視原點(0, 0)的對映,及場景尺寸:
scene->setSceneRect(0, 0, 400, 400);
設定圖元原點位置:
item->setPos(0, 0);

 

2.2 用法示例2:

假設有一個200*200的圖元,
設定檢視尺寸:
view->resize(400, 400);
設定場景座標系某點(-200, -200)到檢視原點(0, 0)的對映,及場景尺寸:
scene->setSceneRect(-200, -200, 400, 400);


設定圖元原點位置:
item->setPos(0, 0);