第一章.C#GDI+基礎

一、GDI+基礎

1、定義:
GDI+是一個庫,它提供了一個接口,此接口允許程序員編寫與打印機、監視器或文件等圖形設備進行交互的Windows和web圖形應用程序。
2、什麼是GDI+
是一組C++類,位於一個名爲Gdiplus.dll的類庫中。
3、受控代碼與不受控代碼
在.net framework中,編寫的受公共語言運行時(CLR)控制的代碼稱爲受控代碼,而不受其控制的稱爲不受控代碼;
4、在.NET Framework庫中提供的受控GDI+類是在System.Drawing名稱空間以及它的五個子名稱空間中定義的,這些子名稱空間爲:System.Drawing.Design,System.Drawing.Drawing2D,System.Drawing.Imaging,System.Drawing.Printing和System.Drawing.Text。
5、GDI+的功能分爲五類類:二維矢量圖形、圖形處理、版式、打印和設計。
6、在GDI+中,設備上下文的概念和設備上下文句柄被Graphics對象取代。Graphics類提供了繪製不同圖形對象的方法和屬性
例如:
首先需要一個與窗體關聯的Graphics對象,通常在窗體的Form_Paint事件或者OnPaint方法中可以找到此對象。在得到了一個與窗體相關的Graphics對象後,可以調用它的繪製和填充方法來繪製和填充不同的圖形對象,如直線、矩形和曲線等。

//通過使用PaintEventArgs.Graphics得到一個與窗體相關聯的Graphics對象。然後,創建一個Pen對象和直線的起始點及結束點作爲參數,在窗體上繪製一條直線。
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen pn = new Pen(Color.Red, 3);
            g.DrawLine(pn, 20, 20, 200, 200);
        }

7、System.Drawing名稱空間

描述
Bitmap 該類封裝了一個位圖,位圖是以像素格式存儲的圖像
Brush 該類是一個不能直接實例化的抽象基類,提供了它的派生畫筆類所使用的功能,並且表示一個畫筆圖形對象,畫筆用於採用特定的顏色填充圖形的內部
Brushes 該類使用所有的標準顏色來表示畫筆,對於每種標準的顏色,這個類都有一個靜態成員與之相對應,例如,Brushes.Blue表示一個藍色的畫筆
ColorConverter 該類提供了將顏色從一種類型轉換爲另一種類型的方法和屬性
ColorTranslator 該類提供了將顏色從一種類型轉換爲另一種類型的各種方法
Font 該類提供了定義字體文本的格式、名稱、外觀、字號和樣式等的成員,還提供了從窗口句柄將Font對象創建到設備上下文或窗口句柄的方法
FontConverter 該類提供了將字體從一種類型轉換爲另一種類型的成員
FontFamily 該類定義了一組具有相似的基本設計但在樣式上有所不同的字體
Graphics 該類封裝了繪製面的關鍵類,與許多其他的類一起提供了繪製和填充圖形對象的成員
lcon 該類表示一個Windows圖標,提供了定義圖標的大小、寬度和高度的成員
IconCOnverter 該類提供了將Icon對象從一種類型裝換爲另一種類型的成員
Image 該類提供了定義圖像的大小、高度、寬度和格式的成員,還提供了從文件、窗口句柄或創建Image對象的方法,以及保存、旋轉和翻轉圖像的方法,其還是一個抽象的基類,通過他的派生類(Bitmap、Icon和Metafile等)可以使用它的功能
ImageAnimator 該類提供了啓動和停止動畫的方法,以及更新具有基於時間的幀的圖像的幀的方法
ImageConverter 該類提供了將Image對象從一中類型轉換爲另一種類型的成員
ImageFormatConverter 該類定義了可以用將圖像從一種格式轉換爲另一種格式的成員
pen 該類定義了一個具有指定顏色和寬度的鋼筆,鋼筆用於繪製直線、矩形、曲線或橢圓等圖形對象
PointConverter 該類定義了可以用來將Point對象從一種類型轉換爲另一種類型的成員
RectangleConverter 該類定義了可以用Rectangle對象從一種類型轉換爲另一種類型的成員
Region 該類在GDI+中表示一個區域,此區域描述了一個圖形的內部
SizeCOnverter 該類定義了將字號從一種類型轉換爲另一種類型的成員
SolidBrush 該類繼承自Brush類,這個類定義了單一顏色的實心畫筆
StringFormat 該類提供了定義文本格式(包括對齊方式、去首尾空白和行間距、顯示處理以及OpenType特性等)的成員
SystemBrushes 該類定義了靜態的屬性,每個屬性都是一個具有Highlight、HighlightText或ActiveBorder等,window優先顯示元素的SolidBrush對象
SystemIcons 該類定義了Windows系統圖標的靜態屬性
SystemPens 該類定義了靜態的屬性,每個屬性都是一個具有Windows顯示元素的顏色和寬度爲1的Pen對象
TextureBrush 該類繼承自Brush類,定義了一個將圖像作爲紋理的畫筆
ToolboxBitmapAttribute 該類定義與特定組件關聯的圖像

8、System.Drawing.Design 名稱空間
從其名字可以看出 ,System.Drawing.Design 名稱空間提供了開發設計時控件 ( 例如自定義的工具箱項 、圖形編輯器和類型轉換器等) 的附加功能 。表 1.2 中簡要地描述了System.Drawing.Design 名稱空間中的類 。除表 1.2 中介紹的類之外,System.Drawing.Design 名稱空間還定義了一些接口 、委託 和枚舉 。表 1.3 列出了在此名稱空間中定義的接口 。

表 1.2 System.Drawing.Design 類

描述
BitmapEditor 該類是使用 “屬性” 窗口選擇位圖的用戶界面
CategoryN田neCollection 該類是類別的集合
FontEditor 該類是選擇和配置字體的 UI
ImageEditor 該類是在屬性窗口中選擇圖像的UI
PaintValueEventArgs 該類提供了 PaintValue 事件的數據
PropertyValue UIItem 該類提供了有關屬性的屬性值 UI 的信息
ToolboxComponentsCreatedEventArgs 該類提供了 ComponentsCreated 事件的數據 ,此事件在向工具箱添加組件時發生
ToolboxComponentsCreatingEventArgs 該類提供了 ComponentsCreating 事件的數據 ,此事件在向工具箱添加組件時發生
Toolboxltem 該類提供了工具箱項的一個基本的實現
ToolboxltemCollection 該類是工具箱 頁的集合
UITypeEditor 該類提供了可以用來設計值編輯器的基類

9 System.Drawing.Drawing2D 名稱空間
System.Drawing.Drawing2D 名稱空間定義了開發高級的二維和矢量圖形應用程序的功 能。此名稱雪間提供了圖形容器 、混合、高級畫筆 、矩陣和變形等的類 。表 1.4 簡要地描 述了這些類 。除表 1.4 中介紹的類之外System.Drawing.Drawing2D 名稱空間還提供了許多枚舉 。 我們將在後面章節的例子中使用這些枚舉時再對其進行介紹 。
表 1.4 System.Drawing.Drawing2D 類

描 述
AdjustableArrowCap 該類表示一個可調整的箭頭形狀的線帽 ,提供了定義要填寫的屬性以及設置箭頭線帽的高度和 寬度的成員
Blend 漸變色混合用於提供圖形內部的光滑和陰影 ,混合圖案包含係數和圖案數組 ,這些數組定義了開 始顏色和結束顏色的位置以及顏色的百分比 c Blend 類定義了 個混合圖案 ,其使用 Linear GradientBrush 來填充圖形 。Factors 和 Positions 屬性分別表示混合係數的數組和漸變位置的數組
ColorBlend 該類定義了在多色漸變中混合的顏色 ,Color 和 Position 屬性分別表示顏色數組和位置數組
CustomLineCap 該類封裝了一個定製的 、用戶自定義的線帽
GraphicsContainer 該類表示圖形容器的數據
Graphics.BeginContainer 以及通過對 Graphics.End- Container 的調用創建的
GraphicsPath 在 GDI+ 中,路徑是 系列相互連接的直線和曲線 。這個類提供了定義路徑的填充模式的屬性 和其他屬性 。該類還定義了向路徑添加圖形的方法 。例如AddArc 方法和 AddCurve 方法將分 別向路徑添加困弧和曲線 z 一些相關的方法如 Wrap、Transform 、Reverse 和 Reset 等
GraphicsPathlterator 路徑可以包含子路徑 。該類提供了找到子路徑的個數並通過子路徑進行迭代的能力 。Count 和SubpathCount 分別返回了路徑中的點的個數和子路徑的個數
Graphics State 該類表示 Graphics 對象的狀態
HatchBrush 陰影畫筆是具有陰影樣式 、前景色和背景色的畫筆 。該類表示 GDI+ 中的陰影畫筆
LinearGradientBrush 該類表示使用線性漸變的畫筆
Matrix 該類封裝了一個表示幾何變形的 3×3 矩陣。該類定義了反轉 、增加、重置 、旋轉、縮放、剪切 和轉化矩陣的方法
PathData 該類包含形式爲組成路徑的點和類型的數據 。這個類的 Points 屬性表示 個點的數組 ,Types屬性表示路徑中的點的類型
PathGradientBrush 該類表示使用圖形路徑的畫筆 。PathGradientBrush 包含混合 、包裝、縮放和變形的方法和屬性 。 該類封裝 r 個使用漸變色填充
GraphicsPath 對象的內部的 Brush 對象
RegionData 該類表示由 Region 對象存儲的數據 。這個類的 Data 屬性表示形式爲字節數組的數據

10 System.Drawing.Imaging 名稱空間
System.Drawing 名稱空間中定義了基本的圖像處理功能 。System.Drawing.Imaging 名 稱空間則提供了高級圖像處理的功能 。在應用程序使用 System.Drawing.Imaging 名稱空間 中的類之前,必須先引用此名稱空間 。
表 1.5 簡要地描述了 System.Drawing.Imaging 名稱空間的類 。這些類及其用法將在第 8章中進行介紹。
表 1.5 System.Drawing.Imaging 類

描述
BitmapData 通常我們不希望加載和刷新位圖的所有數據 ,這是因爲渲染每個像素不僅是一個非常慢的過程 , 而且會消耗很多的系統資源 。由於有BitmapData 類以及它的LockBits 和 UnlockBits 方法的幫助 , 我們可以鎖定內存中所需的位圖數據並對其進行操作 ,而不用對所有的數據進行操作
ColorMap 該類定義了顏色轉換的映射 。ColorMap 由ImageAttributes 類使用
ColorMatrix 該類定義了包含 ARGB 空間的座標的 5x5 矩陣。ColorMatrix 由geAttributes 類使用
ColorPalette 該類定義了 個組成顏色調色板的顏色的數組
ColorPalette 由ImageAttribut的類使用 Encoder 該類表示一個編碼器 ,此編碼器表示一個標識圖像編碼器參數的全局惟→標識符 <GUID )。
Encoder 由EncoderPararneter類使用Encoder Parameter該類是一個編碼器參數 ,用於設置特定種類的圖像的值 。該類在 Save 方法中是與EncoderParameter寫 一起使用的
Encoder Parameters 該類是 Encoder Parameter 對象的數組
FrameDimension 該類提供了獲取圖像的幀尺寸的屬性
ImageAttributes 該類包含了有關在渲染期間如何操作圖像顏色的信息 ( 詳細信息請參見第 7章)
ImageCodecinfo 該類檢索有關己安裝的圖像編解碼器的信息
ImageFormat 該類指定了圖像的格式
Metafile 該類定義了 個圖形圖元文件 ,此文件包含形式爲可以記錄(構造) 和回放 (顯示) 的記錄的 圖形操作

11 System.Drawing.Printing 名稱空間
System.Drawing.Printing 名稱空間定義了 GDI+ 中與打印相關的類和類型 。在應用程序 使用此名稱空間的類之前 ,必須先包含這個名稱空間 。
表 1.6 簡要地討論了 System.Drawing.Printing 名稱空間所提供的類 。這些類及其用法 將在第 11 章中進行介紹。

12 System.Drawing.Text 名稱空間
System.Drawing.Text 名稱空間只包含一些與高級 GDI+ 版式功能相關的類 。在應用 程序使用此名稱空間的類之前 ,必須先包含這個名稱空間 。表 1.7 描述了這些類 :在第 5 章中將對這些類進行詳細的介紹 。

(說明:以上內容來自:《GDI+圖形程序設計》)

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