GraphicsView使用(待完善)

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個屬性基本控制繪圖的基本特點,還有其他功能可結合使用:疊加 旋轉和縮放

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章