GDI+與GDI

1、概述

        GDI在全稱是Graphics Device Interface,即圖形設備接口。是圖形顯示與實際物理設備之間的橋樑。GDI接口是基於函數,雖然使程序員省力不少,但是編程方式依然顯得麻煩。例如顯示一張位圖,我們需要進行“創建位圖,讀取位圖文件信息,啓用場景設備,調色板變化“等一系列操作。然而有了GDI+,繁瑣的步驟再次被簡化。顧名思義,GDI+就是GDI的增強版,隨windows xp一起推出它是一組通過C++類實現的應用程序編程接口

        利用GDI+函數,你不必使用句柄或者設備描述表。相反,你可以簡單地創建一個圖形對象(Graphics),然後以你熟悉的面向對象的編程方式調用它的方法即可,譬如myGraphics.DrawLine()。Graphics對象是GDI+的核心,正如DC是GDI的核心一樣,設備描述表(DC)和圖形對象(Graphics)在不同的環境下扮演着同樣的角色,發揮着類似的作用,但是兩者也存在着本質的不同。前者使用基於句柄的編程方法而後者使用面向對象的編程方法。

        圖形對象和設備對象一樣,與屏幕的顯示窗口有關,它包含着與項目重繪有關的屬性信息(譬如平滑度),然而圖形對象並沒有像GDI那樣與Pen(畫筆)、Path(路徑)、Image(圖像)、Font(字體)等攪在一起。

        在GDI中,所有與繪圖有關的繪圖對象必須選入指定設備描述表中(使用SelectObject函數),才能被指定的設備描述表所使用。

        而在GDI+中,你只需把這些繪圖對象作爲一個參數傳遞給圖形對象Graphics方法調用即可,每一個圖形對象所使用的繪圖工具至於它調用方法使用的參數有關,它可以通過參數使用多種Pen和Brush繪圖,而不是與特定的筆和畫刷聯繫在一起。

           將畫刷等對象選入設備之後才能進行繪圖輸出的編程方式成爲狀態模型編程,GDI使用的就是此種方式。GDI+中使用的是非狀態模型編程。

2、GDI+的新特色(優勢)

(1)漸變的畫刷

          GDI+支持顏色逐漸變化的畫刷,能顯出圖形的立體感。GDI只支持單色畫刷。

(2)獨立的路徑對象

       在GDI中,路徑屬於設備描述表(DC),畫完後路徑就會被破壞。在GDI+中,繪圖工作由Graphics對象來完成,你可以創建幾個與Graphics分開的路徑對象,繪圖操作時路徑對象不被破環,這樣你就可以多次使用同一個路徑對象畫路徑了。

(3)矩形對象

       GDI+提供了矩陣對象,一個非常強大的工具,使得編寫圖形的旋轉、平移、縮放代碼變得非常容易。一個矩陣對象總是和一個圖形變換對相聯繫起來,比方說,路徑對象(PATH)有一個Transform方法,它的一個參數能夠接受矩陣對象的地址,每次路徑繪製時,它能夠根據變換矩陣繪製。下面的圖形是一個圖形變換前後的例子,變換按照先縮放後旋轉完成。

(4)Alpha通道合成運算(Alpha Blending)

      GDI+支持AlphaBlending(混合),利用alpha融合,你可以指定填充顏色的透明度,透明顏色與背景色相互融合,填充色越透明,背景色顯示越清晰。

(5)多格式圖片支持

      圖像在圖形界面程序中佔有舉足輕重的地位,GDI+除了支持BMP等GDI支持的圖形格式外,還支持JPEG、GIF、PNG、TIFF等圖像格式,你可以直接在程序中使用這些圖片文件,而無需考慮它們所用壓縮算法。

 

 

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