QT4.2開始引入了Graphics View框架用來取代QT3中的Canvas模塊,並作出了改進,Graphics View框架實現了模型-視圖結構的圖形管理,能對大量圖元進行管理,支持碰撞檢測,座標變換和圖元組等多種方便的功能。
GraphicsView框架結構主要包含三個主要的類QGraphicsScene(場景)、QGraphicsView(視圖)、QGraphicsItem(圖元)。QGraphicsScene本身不可見,是一個存儲圖元的容器,必須通過與之相連的QGraphicsView視圖來顯示及與外界進行交互,主要提供圖元的操作接口、傳遞事件和管理各個圖元狀態,提供無變換的繪製功能(如打印);QGraphicsView提供一個可視的窗口,用於顯示場景中的圖元,一個場景中可以有多個視圖。QGraphicsItem是場景中各個圖元的基礎類,QT提供了常用圖形圖元的標準類,如矩形(QGraphicsRectItem)、橢(QGraphicsEllipseItem)、文本(QGraphicsTextItem)。
GraphicsView是一個基於圖元的Model/View架構的框架,每一個組件都是一個獨立的元素。QPainter採用面向過程的描述方式繪圖;GraphicsView採用面向對象的描述方式繪圖。GraphicsView繪圖時首先創建一個場景,然後創建圖元對象(如一個直線對象、一個多邊形對象),再使用場景的add()函數,將圖元對象添加到場景中,最後通過視圖進行顯示。對於複雜的圖像來說,如果圖像包含大量的直線、曲線、多邊形等圖元對象,管理圖元對象比管理QPainter的繪製過程語句要容易,並且圖元對象更符合面向對象的思想,圖形的可複用性更好。
Graphics View框架實現了模型-視圖結構的圖形管理,能對大量圖元進行管理,支持碰撞檢測,座標變換和圖元組等多種方便的功能。
一、GraphicsView框架結構主要包含三個主要的類:
類一:QGraphicsScene:本身不可見,是一個存儲圖元的容器,必須通過與之相連的QGraphicsView視圖 來顯示及與外界進行交互;主要提供圖元的操作接口、傳遞事件和管理各個圖元狀態,提供無變換的繪製功。
類二:QGraphicsView:提供一個可視的窗口,用於顯示場景中的圖元,一個場景中可以有多個視圖。
類三:QGraphicsItem:是場景中各個圖元的基礎類,QT提供了常用圖形圖元的標準類,如矩形(QGraphicsRectItem)、 文本(QGraphicsTextItem)。
GraphicsView 採用面向對象的描述方式繪圖,步驟概況如下:
步驟一、首先創建一個場景,
步驟二、然後創建圖元對象(如一個直線對象、一個多邊形對象),
步驟三、再使用場景的add()函數,將圖元對象添加到場景中,
步驟四、最後通過視圖進行顯示 (一般用法是通過接口 setScene (QGraphicsScene&)綁定一個Scene對象)
對於複雜的圖像來說,如果圖像包含大量的直線、曲線、多邊形等圖元對象,管理圖元對象比管理QPainter的繪製過程語句要容易,並且圖元對象更符合面向對象的思想,圖形的可複用性更好。
二、QGraphicsScene場景
QGraphicsScene場景是QGraphicsItem對象的容器,主要功能如下:
A、提供管理大量圖元的快速接口
B、傳播鼠標、鍵盤等事件給場景中的每個圖元
C、管理圖元狀態,如圖元選擇和焦點處理
D、提供無變換的渲染功能,如打印
.......
三、QGraphicsView視圖
QGraphicsView是視圖窗口部件,使場景內容可視化,可以連接多個視圖到一個場景,也可以爲相同數據源的數據集提供不同的視圖。可以提供滾動條來瀏覽大的場景。
四、QGraphicsItem圖元
QGraphicsItem是圖元的基類。QGraphics View框架提供了多種標準的圖元:
QGraphicsEllipseItem 橢圓圖元
QGraphicsLineItem 直線圖元
QGraphicsPathItem 路徑圖元
QGraphicsPixmapItem 圖像圖元
QGraphicsPolygonItem 多邊形圖元
QGraphicsRectItem 矩形圖元
QGraphicsSimpleTextItem 簡單文本圖元
QGraphicsTextItem 文本瀏覽圖元
用戶可以繼承QGraphicsItem實現自定義的圖元。
QGraphicsItem圖元主要特性如下:
A、支持鼠標按下、移動、釋放、雙擊、懸停、滾動和右鍵菜單事件。
B、支持鍵盤輸入焦點和按鍵事件
C、支持拖拽事件
D、支持分組,使用父子關係和QGraphicsItemGroup
E、支持碰撞檢測
五、GraphicsView座標系統
Graphics View座標系基於笛卡爾座標系,圖元的場景中的位置和幾何形狀通過x座標和y座標表示。
當使用沒有變換的視圖觀察場景時,場景中的一個單位對應屏幕上的一個像素。
Graphics View架構中有三個有效的座標系統,圖元座標、場景座標和視圖座標。
Graphics View提供了三個座標系統之間的轉換函數。在繪製圖形時,QGraphics View的場景座標對應QPainter的邏輯座標,
QGraphics View的視圖座標對應QPainter的設備座標。
六、QPainter繪圖的主要屬性
主要繪製一些基本圖形元素(點、直線、圓形、矩形、曲線、文字),控制這些繪圖元素特性的主要是QPainter的3個屬性:
pen屬性:是一個QPen對象,用於控制線條的顏色、寬度、線型
brush屬性:是一個QBrush對象,用於一個區域的填充特性,可以設置填充顏色、填充方式、漸變特性等
font屬性:是一個QFont對象,用於繪製顏色的時候,設置文字的字體樣式、大小屬性
注:使用3個屬性基本控制繪圖的基本特點,還有其他功能可結合使用:疊加 旋轉和縮放