GDI+ 基礎知識入門

GDI+學習筆記之--------------------------------------------GDI+的基礎知識

  本節主要主要是對GDI+知識的一些基本的介紹。

  Microsoft Windows GDI+ 是Windows XP和Windows Server 2003操作系統的子系統,它負責在屏幕和打印機上顯示信息。GDI+是一個應用程序編程接口(API),它由一組C++類實現。

  顧名思義,GDI+是對於GDI的繼承,後者包含於早期的Windows版本中。Windows XP 或者 Windows Server 2003支持GDI以保持對現有程序的兼容性,但是編寫新程序的開發者應該使用GDI+來實現他們所有的圖形需求,因爲GDI+不僅優化了大部分GDI性能而且提供了更多特性。

  一個圖形設備接口,比如GDI+,允許應用程序開發者將信息顯示在顯示器或者打印機上,而無須考慮該顯示設備的詳細情況。應用程序開發者調用GDI+類所提供的方法,而這些方法又依次適當地調用特定設備驅動程序。GDI+使得應用程序和圖形硬件隔離開來,得益於此,開發者因而可以創建設備無關的應用程序。

  (1)Microsoft Windows GDI+服務分爲以下3個主要部分。

  二維矢量圖形:矢量圖形由圖元(比如線條、曲線和圖形)組成,它們由一系列座標系統的點集組成。例如,一條直線可以由它的兩個端點所確定,一個矩形可以通過給出它的左上角點的位置加上它的寬度、高度來確定。一個簡單的路徑可以由一個由直線連接而成的點數組來描述。一條貝塞爾線條是一個由4個控制點所描述的高級曲線。GDI+提供了用於存儲這些圖元本身信息的類、如何繪製這些圖元信息的類及實際繪製這些圖元的類。例如,Rect類存儲一個矩形的尺寸位置;Pen類存儲線條顏色、線條寬度及線條樣式等信息;而Graphics類則提供繪製線條、矩形、路徑和其他圖形的方法。同時,有幾個Brush類還用於存儲有關閉合圖形和路徑內部填充顏色和圖案的信息。

  圖像:某些圖片很難或者不可能採用矢量圖形技術來顯示。比如,工具欄按鈕圖片和圖標就很難通過一系列線條和曲線來描述。一張擁擠的棒球館的高分辨率的數碼照片,更難採用矢量技術來創建。這種類型的圖像採用位圖進行存儲,即由表示屏幕上獨立點的顏色的數字型數組所組成。用於存儲位圖信息的數據結構往往比矢量圖形要複雜得多,因此出於此種原因,GDI+中提供了好幾種類。類似的類比如CachedBitmap,用於存儲一張內存圖片,供快速存取和顯示用。

  排版:排版關係到多種字體、尺寸和樣式文字的顯示。GDI+提供了對這項複雜任務的支持。新的特性中包括了子像素抗鋸齒功能,它使得在液晶顯示屏上可以顯示更加平滑的顯示文本。

  (2)GDI+的成員類與函數。

  Microsoft Windows GDI+包含大約40個類、50個枚舉和6個結構體。同時也有少數幾個函數不屬於任何類。Graphics類是整個GDI+接口的核心,它是實際進行線條、曲線、圖形、圖像和文本繪製的類。

  多數類和Graphics類配合使用。例如,Graphics::DrawLine()方法接受一個點傳給一個Pen對象,該對象保存了即將繪製的線條屬性(顏色、寬度、虛線類型及其他)。Graphics::FillRectangle()方法接受一個點傳給LinearGradientBrush對象,該對象協同Graphics對象實現矩形的漸變色填充。Font和StringFormat對象影響到Graphics對象繪製文本的方式。Matrix對象用於存儲和生成一個Graphics對象的世界變換矩陣,用於旋轉、縮放和翻轉圖像。

  有些類是主要用作數據類型結構體。這些類中大多數(例如Rect、Point和Size類)用於普通目的。其他的則用於特殊目的,被看作是輔助類。例如,BitmapData類是Bitmap類的輔助類,PathData類是GraphicsPath類的輔助類。GDI+同時定義了少數幾個結構體用於組織數據。例如,ColorMap結構體存儲一對顏色對象,構成了一個顏色轉換表的入口        項目。

  GDI+定義了數個枚舉常量,它們是相關常數的集合。例如,LineJoin枚舉包含了LineJoinBevel、LineJoinMiter和 LineJoinRound幾個元素,表示兩根線條的連接方式。GDI+提供了少數幾個不屬於任何類的函數,其中的兩個是GdiplusStartup()和GdiplusShutdown()函數。在進行任何GDI+調用之前調用GdiplusStartup()函數,在結束GDI+調用的時候調用GdiplusShutdown()函數。

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