




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章 GDI+編程議程 .NET圖形編程概述 畫筆和畫刷 圖形的繪制 文本和字體 雙緩沖一、圖形編程概述 1.GDI+技術簡介 GDI:Graphics Device Interface GDI+是一種構成Microsoft Windows XP操作系統的子系統的應用程序編程接口(API)。GDI+負責在屏幕和打印機上顯示信息。 GDI+:GDI的改進,同時也是.NET框架結構的重要組成部分。和GDI一樣它提供了對二維圖形圖像和文字排版處理的支持。 通過GDI+能夠創建與設備無關的應用程序。GDI+提供的新特性:-Alpha混合技術-反鋸齒處理技術-漸變色和紋理填充-寬線條-基本幾何曲線樣式
2、-可縮放區域-浮點數坐標-嵌入畫筆-高質量過濾和縮放-多種線條樣式和端點選項6.1坐標系統 GDI+在坐標系中繪制直線、矩形和其他形狀。我們可以從各種各樣的坐標系統中選擇,但默認系統的原點是在左上角,并且x軸指向右邊,y軸指向下邊。默認坐標系統的度量單位是像素。 (0,0)(x,0)(0,y)注:x,y為屏幕的分辨率6.2 Graphics類Graphics類是使用GDI+的基礎,它代表了所有輸出顯示的繪圖環境,用戶可以通過編程操作Graphics 對象,在屏幕上繪制圖形、呈現文本或操作圖像。創建Graphics 對象可以有多種方法。(1)Paint事件 在為窗體編寫 Paint 事件處理程序
3、時,圖形對象作為一個 PaintEventArgs 類的實例提供。下面的代碼引用 Paint 事件的 PaintEventArgs 中的 Graphics 對象:private void Form1_Paint(object sender, PaintEventArgs pe) / 聲明圖形對象并把它設置為PaintEventArgs事件提供的圖形對象 Graphics g = pe.Graphics; / 在這插入繪制窗體的代碼(2) CreateGraphics方法 使用控件或窗體的 CreateGraphics()方法來獲取對 Graphics 對象的引用,該對象表示這個控件或窗體的繪圖
4、表面。例如:Graphics g; /把g設為一個圖形對象,來表示控件或窗體的繪圖平面g = this.CreateGraphics(); / this可替換成其他的控件名,用this的話將form創建為畫布(3)Graphics.FromImage方法 從 Image 類派生的任何對象創建圖形對象,調用 Graphics.FromImage ()方法即可。例如:Bitmap myBitmap = new Bitmap(C:myPic.bmp);Graphics g = Graphics.FromImage(myBitmap);在 GDI+ 中,可使用“畫筆”和“畫刷”對象來呈現圖形、文本和圖
5、像。畫筆是 Pen 類的實例,可用于繪制線條和空心形狀。畫刷是從抽象類Brush 類派生的任何類的實例,可用于填充形狀或繪制文本。Color對象是表示特定顏色類的實例,畫筆和畫刷可使用構造函數來指定它所呈現的圖形的顏色。例如:Pen myPen = new Pen(Color.Red); / 創建一個紅色的筆.SolidBrush myBrush = new SolidBrush(Color.Blue); / 創建一個深藍的畫刷.Graphics類的常用屬性和方法分別如表6-1和表6-2所示。表6-1 Graphics類的常用屬性表6-2 Graphics類的常用方法二、繪圖.NET提供了繪制
6、各種圖形的功能。它允許用戶在窗體及其中的各種對象上繪制直線、矩形、多邊形、圓、橢圓、圓弧、曲線、餅圖等圖形狀態。2.1 畫筆畫筆 畫筆(Pen)用于繪制直線和曲線,無法繼承此類,它在System.Drawing命名空間中。畫筆可用于繪制線條、曲線以及勾勒形狀輪廓。下面的代碼創建一支基本的黑色畫筆:Pen myPen = new Pen(Color.Black); / 創建一個默認寬度為1的黑色畫筆Pen myPen = new Pen(Color.Black, 5); / 創建一個寬度為5的黑色畫筆 也可以通過已存在的畫刷對象創建畫筆。下面的代碼創建基于已存在畫刷(名為 myBrush)的畫筆
7、:Pen myPen = new Pen(myBrush); / 創建一個畫筆,與myBrush有相同的屬性,并且默認寬度為1。Pen myPen = new Pen(myBrush, 5); / 創建一個畫筆,與myBrush有相同的屬性,并且寬度為5. 在畫筆創建后,可以設置畫筆的線條形式的各種屬性。Width和Color等屬性會影響線條的外觀,而StartCap和EndCap屬性將預設或自定義的形狀添加到線條的開始或結尾。DashStyle屬性允許在實線、虛線、點劃線或自定義點劃線之間進行選擇,而DashCap屬性可以自定義線條中短劃線的結尾。2.2 畫刷畫刷 畫刷是與 Graphics
8、 對象一起使用來創建實心形狀和呈現顏色與圖案的對象。幾種不同類型的畫刷如表6-3所示。 所以這些類均是從Brush類繼承的,該類是抽象類,不能實例化。表表6-3 畫刷的類型畫刷的類型 例6.1 設計WinForm應用程序分別使用畫筆和畫刷畫出以坐標(30,30)和(130,30)為起點的長為70、高為50的矩形。2.3 繪制直線繪制直線 繪制直線時,可以調用Graphics類中的DrawLine方法,該方法為可以重載方法,主要用來繪制一條連接由坐標對指定的兩個點的線條,其常用格式有以下兩種: 1)繪制一條連接兩個Point結構的線,如下所示: Graphics g = this.CreateG
9、raphics(); g.DrawLine(Pen myPen,Point pt1,Point pt2); 其中筆對象myPen確定線條的顏色、寬度和樣式。pt1是Point結構,它表示要連接的一個點。Pt2是Point結構,表示要連接的另一個點。 2)繪制一條連接由坐標對指定的兩個點的線條,如下所示: Graphics g = this.CreateGraphics(); g.DrawLine(Pen myPen,int x1,int y1,int x2,int y2); DrawLine方法中各參數及說明如表6-4所示。6-4 DrawLine方法中各參數及說明方法中各參數及說明 例6.2
10、 設計WinForm應用程序分別使用以上介紹的方法繪制直線。2.4 繪制矩形 可以調用Graphics類中的DrawRectangle方法來繪制矩形,該方法為可重載方法,主要用來繪制由坐標對、寬度和高度指定的矩形,其常用格式有以下兩種。 1)繪制由Rectangle結構指定的矩形,如下所示: Graphics g = this.CreateGraphics(); g.DrawRectangle(Pen myPen,Rectangle rect); 其中myPen為筆Pen的對象,它確定矩形的顏色、寬度和樣式。rect表示要繪制矩形的Rectangle結構。例如,聲明一個Rectangle結構,
11、代碼如下: Rectangle rect=new Rectangle(30,30,100,80);/以(30,30)為起點長為100,高為80的矩形 2)繪制由坐標對、寬度和高度指定的矩形,如下所示: Graphics g = this.CreateGraphics(); g.DrawRectangle(Pen myPen,int x,int y,int width,int height);2.5 繪制橢圓 繪制橢圓時,可以調用Graphics類中的DrawEllipse方法,該方法為可重載方法,主要用來繪制邊界由Rectangle結構指定的橢圓,其常用格式有以下兩種。 1)繪制邊界由Rect
12、angle結構指定的橢圓,如下所示: Graphics g = this.CreateGraphics(); g. DrawEllipse(Pen myPen,Rectangle rect); 其中myPen為筆Pen的對象,它確定曲線的顏色、寬度和樣式。Rect為Rectangle結構,定義橢圓的邊界。 2)繪制一個由邊框(該邊框由一對坐標、高度和寬度指定)指定的橢圓,如下所示: Graphics g = this.CreateGraphics(); g. DrawEllipse(Pen myPen,int x,int y,int width,int height);2.6 繪制圓弧 繪制圓
13、弧時,可以調用Graphics類中的DrawArc方法,該方法為可重載方法,主要用來繪制一段弧線,其常用格式有以下兩種。 1)繪制一段弧線,它表示由Rectangle結構指定的橢圓的一部分,如下所示: Graphics g = this.CreateGraphics(); g. DrawArc(Pen myPen,Rectangle rect,startAngle,sweepAngle); DrawArc方法中各參數及說明下表所示: 參數說明myPenPen對象,它確定弧線的顏色、寬度和樣式rectRectangle結構,它定義橢圓的邊界startAngle從x軸到弧線的起始點沿順時針方向度量
14、的角(以度為單位)sweepAngle從startAngle參數到弧線的結束點沿順時針方向度量的角(以度為單位) 2)繪制一段弧線,它表示由一對坐標、寬度和高度指定的橢圓部分,如下所示: Graphics g = this.CreateGraphics(); g. DrawArc(Pen myPen,int x,int y,int width,int height, startAngle,sweepAngle); 2.7 繪制多邊形 繪制多邊形需要Graphics對象、Pen對象和Point或PointF(對象數組)。Graphics對象提供DrawPolygon方法繪制多邊形,Pen對象存儲
15、用于呈現多邊形的線條屬性,例如,寬度和顏色等,Point存儲多邊形的各個頂點。Pen對象和Point或PointF作為參數傳遞給DrawPolygon方法。其中數組中的每對相鄰的兩個點指定多邊形的一條邊。另外,如果數組的最后一個點和第一個點不重合,則這兩個點指定多邊形的最后一條邊,其常用格式有以下兩種: 1)繪制由一組Point結構定義的多邊形,如下所示: Graphics g = this.CreateGraphics(); g.DrawPolygon(Pen myPen,Point points); myPen為Pen對象,用來確定多邊形的顏色、寬度和樣式。points為Point結構數組
16、,這些結構表示多邊形的頂點。2)繪制由一組PointF結構定義的多邊形,如下所示: Graphics g = this.CreateGraphics(); g.DrawPolygon(Pen myPen,Point points); myPen為Pen對象,用來確定多邊形的顏色、寬度和樣式。points為Point結構數組,這些結構表示多邊形的頂點。三、顏色 .NET 框架的 Color 結構用于表示不同的顏色。顏色與畫筆和畫刷一起使用來指定要呈現的顏色。 1.系統定義的顏色系統定義的顏色 可以通過 Color 結構訪問若干系統定義的顏色。這些顏色的示例如下: Color myColor; m
17、yColor = Color.Red; Color myColor = Color. Red; 上面的語句為myColor 分配系統定義的顏色。 2用戶定義的顏色用戶定義的顏色 可以使用 Color.FromArgb ()方法創建用戶定義的顏色。定義時,可以指定一種顏色中紅色、藍色和綠色各部分的強度。 Color myColor= Color.FromArgb(23,56,78); 此示例生成一種用戶定義的顏色,該顏色大致為略帶藍色的灰色。每個數字均必須是從 0 到 255 之間的一個整數,其中 0 表示沒有該顏色,而 255 則為所指定顏色的完整飽和度。因此,Color.FromArgb(0
18、,0,0) 呈現為黑色,而 Color.FromArgb(255,255,255) 呈現為白色。 3Alpha 混合處理(透明度)混合處理(透明度) Alpha 表示所呈現圖形后面的對象透明度。Alpha 混合處理的顏色對于各種底紋和透明度效果很有用。如果需要指定 Alpha 部分,則它應為 Color.FromArgb ()方法中四個參數的第一個參數,并且需要從 0 到 255 之間的一個整數。例如: Color myColor = Color.FromArgb(127, 23, 56, 78); 此示例創建一種顏色,該顏色為略帶藍色的灰色且透明度大致為 50% 。也可以通過指定 Alpha
19、 部分和以前定義的顏色來創建 Alpha 混合處理的顏色。 Color myColor = Color.FromArgb(128, Color.Tomato); 此示例創建一種顏色,該顏色明度大約為 50% ,為系統定義的Tomato 的顏色。 四、文本輸出 在實際應用中,常常需要在控件對象中輸出文本,.NET中可以在有些控件中“寫”出文本。所謂“寫”即以字符的編碼來對應字符的圖像輸出,比如,標簽、文本框、按鈕、列表框等控件,在它們的“Text”屬性中保存了要顯示的文本字符,改變文本即可以改變顯示的字符。而有些控件不能“寫”出文本,只能“畫”出文本,例如,窗體和圖片框等,在這些控件中輸出文本,
20、實際上是通過Graphics對象的DrawString方法來畫出字符的圖像。當然,標簽、文本框、按鈕、列表框等控件也可以采用這種方法畫出文本。4.1 字體字體 要輸出文本,需要先指定文本的字體,字體可以通過Font類的構造函數來設置。語法格式如下: Font字體對象名=new Font(字體名稱,大小,樣式,量度) 其中: 字體對象名:要創建的字體對象名。 字體名稱:字體的名稱,String類型值。如Time New Roman、宋體、楷體。 大小:Single類型的值,指定字體的大小,默認單位為點。 樣式:可選項。指定字體的樣式,是FontStyle枚舉類型的值,各種樣式見表6-5。 量度:
21、可選項。指定字體大小的單位,是GraphicsUnit枚舉類型的值,各種量度單位見表6-6。6-5 FontStyle枚舉類型的成員枚舉成員樣式Bold粗體Italic斜體Regular常規Strikeout中劃線Underline下劃線枚舉成員量度單位Display1/75英寸Document文檔單位(1/300英寸)Inch英寸Millimeter毫米Pixel像素Point打印機點(1/72英寸)World通用6-6 GraphicsUnit枚舉類型的成員例如:定義一個字體對象,其名稱為“隸書”,大小為14,樣式為下劃線,量度單位為點,代碼如下:Font myFont=new Font(
22、“隸書”,14,FontStyle.Underline,GraphicsUnit.Point);4.2 輸出文本當定義了文本字體后,就可以用DrawString方法來輸出文本,有以下三種使用DrawString方法的格式。DrawString(字符串,字體對象,畫刷,點);DrawString(字符串,字體對象,畫刷,X,Y);DrawString(字符串,字體對象,畫刷,矩形);其中:字符串:要輸出的文本。字體對象:要使用的字體對象名,調用之前應已創建。畫刷:指定字體的顏色,使用實心畫刷。點:PointFont結構類型,用來指定文本輸出的開始位置。X,Y:Single類型的值,用來指定文本輸出的開始位置的坐標值。矩形:RectangleF結構類型(不是Rectangle),用來定義一個矩形,矩形的左上角坐標、高度、寬度均為Single型的值,文本在該矩形中輸出。 調用 Graphics 對象的 Graphics.DrawString 方法來呈現文本。如果提供 RectangleF 對象,則文本將在矩形中換行。否則,文本將從提供的起始坐標處開始。例如: g.DrawString(Look at this text!, myFont, myBrush, new RectangleF(10, 10, 100, 200); g.DrawSt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國戲曲學院《安裝工程BM算量軟件應用》2023-2024學年第一學期期末試卷
- 輸電線路設計規范
- 事業單位辦公軟件培訓
- 基本公共衛生培訓
- 2025工程咨詢服務合同
- 2025合作伙伴采購協議合同范本
- 2025建筑工程施工合同(V)
- 2025合同法在實踐中的成就與局限(上)
- 2025年度高校學生國家助學金申請合同
- 2025冰箱購銷合同模板
- 國家發展改革委低空經濟司
- 單位體檢協議書模板合同
- 課題申報書:醫學院校研究生“導學思政”創新實踐路徑研究
- 2025年游泳教練資格認證考試理論試題集(初級)
- 委托律師簽署協議書
- 圖文工廠轉讓協議書
- 貨物貿易的居間合同
- 2025-2030中國療養院行業市場深度分析及前景趨勢與投資研究報告
- 2025年國企山東濟南公共交通集團有限公司招聘筆試參考題庫附帶答案詳解
- 高二入團考試試題及答案
- 福建省漳州市醫院招聘工作人員真題2024
評論
0/150
提交評論