QPainter和QGraphicsView的區別

2021-10-21 14:27:09 字數 1815 閱讀 6728

1、 qpainter

2、 qgraphicsview

3、 qpainter和qgraphicsview區別的理解

4、qgraphicsview框架基本原理

1、 qpainter用於「畫」出圖形,這裡我為什麼要把畫打上引號呢?因為這裡可以把qpainter想象成一支筆,用這個工具在紙上畫出影象過後,對於整個紙張來說,畫出來的東西就是不可移動的。

2、 且用這個工具畫出來的影象一般都複雜度不高

3、因此qpainter工具主要用於畫出簡單,不可移動的影象。即畫出影象過後,紙上所畫出來的東西就不能移動了。

1、 按照官方檔案來講,qgraphicsview是一種模型–檢視結構的圖形管理工具。可以對單個圖元進行管理操作。

2、能做的操作,進行碰撞檢測座標變換,圖元的選擇編輯移動等。

針對兩者的區別可以從程式設計的角度來理解;

qpainter:是一種面向過程的工具,即用這個工具畫出的圖,是繪製出乙個過程,即從座標(0,0)到座標(200,300)畫出一條直線。一旦畫出來來過後,整個事件就完成了。圖形就一直在那裡。比如你在紙上用鉛筆畫出來一條直線,如果把白紙作為背景,那麼畫出來的直線就不可以移動

qgraphicsview:可以理解為一種物件導向的工具,qgraphicsview工具是一種將直線橢圓矩形等各種形狀作為乙個個配件,而程式設計者需要做的是利用這些配件,組裝出自己想要的影象,這些配件是可以被操作的,其中的操作包括,旋轉移動放大縮放選擇等等,就不像qpainter的那樣----畫出來即是固定。所以qgraphicsview更像是一種可供使用者diy的玩具。可以用來組裝這些部件。比如搭積木,用方塊,圓,長方體,拱形等,搭建出來乙個複雜的更大更精細的物件。

qgraphicsview的框架

qgraphicsscene

場景本身不可見,是乙個抽象的管理圖元,圖形項的容器,可以向場景中新增圖元,獲取某個圖元。

1.管理大量圖元的介面。

2.傳播事件到場景中的單一或者所有圖元。

3.提供未經變換的渲染功能,用於列印。

4.管理圖元狀態,如圖元選擇和焦點處理。

#### qgraphicsview 為場景中提供繪圖的檢視軟體,用於顯示場景中的內容,可以為乙個場景設定幾個檢視,用於對同乙個資料集提供不同的觀察方式。

#### qgraphicsitem 提供基本的圖形元件,支援事件響應,如滑鼠事件,鍵盤事件,拖放事件,以實現圖形的互動事件。

座標系統

1.場景座標

即以設定的場景的左上角為原點(0,0)

視窗介面的物理座標,單位是畫素,左上角為原點座標,所有事件最開始都使用檢視座標,為了和圖元互動,需要轉換為場景座標。

3.圖形座標

通常以圖元的中心為原點,圖元中心也是所有座標變換的原點,座標系方向向上。

Qt中QPainter的問題

我在進行2d繪製時,採用了qpainter的方法,想在qlabel上繪圖,所以直接就 qpainter painter,painter.begin label 報錯 qpainter begin paint device returned engine 0,type 1 qpainter end p...

在QML中使用QPainter

要想在 qml 中進行繪圖,有很多方法,1 在我之前的部落格中,就講過如何在 qml 中使用 opengl,這是一種方法,但它要求 opengl 的基礎。2 一種方法是使用 qpainter,它的好處是提供很多易用和實用的繪圖 api,而且在很多在 widgets 的使用的 可以直接移到qml中來使...

Qt學習 QPainter之漸變填充

前面說了有關反走樣的相關知識,下面來說一下漸變。漸變是繪圖中很常見的一種功能,它是利用顏色插值使得兩個或更多顏色之間能夠平滑過渡,簡單來說就是可以把幾種顏色混合在一起,讓它們能夠自然地過渡,而不是一下子變成另一種顏色。它們常被用來建立二維圖形的三維效果。漸變的演算法比較複雜,寫得不好的話效率會很低,...