




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、聲明本文檔收集自互聯(lián)網(wǎng),版權(quán)歸原作者所有。因不滿有些人用其謀取私利而特意收集上傳,以發(fā)揚(yáng)共享精神。僅供預(yù)覽或讀者私人使用,嚴(yán)禁用于商業(yè)使用或公開傳播。請(qǐng)?jiān)谙螺d預(yù)覽后盡快刪除。,GDI+繪圖編程入門,3,學(xué)習(xí)內(nèi)容,掌握GDI+的基本知識(shí) Graphics對(duì)象與Paint事件 常用的數(shù)據(jù)結(jié)構(gòu)、畫筆、畫刷、文字與圖像的顯示 參考例子GUIsample完成大作業(yè),GDI+,GDI+是Microsoft的新一代的二維圖形系統(tǒng),它完全面向?qū)ο?。GDI+包括三部分:二維矢量圖形繪制、圖像處理和文字顯示。要在Windows窗體中顯示字體或繪制圖形必須要使用GDI+。 GDI+提供了多種畫筆、畫刷、圖像等圖形對(duì)
2、象,此外還包括一些新的繪圖功能,如Alpha混色、漸變色、紋理、消除鋸齒以及使用包括位圖在內(nèi)的多種圖像格式。 GDI+使用的各種類大都包含在命名空間System:Drawing中。,座標(biāo)系統(tǒng),在我們開始之前, 一定要先知道GDI+ 的座標(biāo)系統(tǒng)如何定義。座標(biāo)原點(diǎn)(0, 0)在左上角, X 軸及Y 軸分別向右及向下增加, 預(yù)設(shè)的單位長(zhǎng)度是像素(pixel), 請(qǐng)看下圖:,常用的數(shù)據(jù)結(jié)構(gòu),在使用GDI+顯示文字和繪制圖形時(shí),經(jīng)常要用到一些數(shù)據(jù)結(jié)構(gòu),如Size、Point和Rectangle等。它們?cè)赟ystem:Drawing命名空間中定義,都屬于值類型(結(jié)構(gòu)類型)。 Point結(jié)構(gòu) 代表Windo
3、ws窗體應(yīng)用程序中的一個(gè)二維表面上的位置,常用于定義窗體或控件的位置;表示一個(gè)點(diǎn)的坐標(biāo)值,具有以下兩種屬性: X,定義Point結(jié)構(gòu)的x坐標(biāo)或者水平位置。 Y,定義Point結(jié)構(gòu)的y坐標(biāo)或者垂直位置。 初始化方法有4種 Point():空點(diǎn); Point( int x, int y ):直接指定X坐標(biāo)和Y坐標(biāo)初始化;,Point結(jié)構(gòu),Point( int dw ):通過一個(gè)用32位的整數(shù)來初始化,參數(shù)的高16位表示Y坐標(biāo),低16位表示X坐標(biāo)。 Point( Size sz ):通過一個(gè)Size變量來初始化。sz的寬度表示X坐標(biāo),高度表示Y坐標(biāo)。 可通過IsEmpty屬性檢測(cè)Point結(jié)構(gòu)是否為
4、空,為空則返回true。 可以直接對(duì)Point變量進(jìn)行+、=、!=運(yùn)算以及Point變量與Size值的加減操作。 PointF結(jié)構(gòu)類似Point結(jié)構(gòu),區(qū)別是它的坐標(biāo)是浮點(diǎn)值。 Point值可以隱式自動(dòng)轉(zhuǎn)換成PointF值;PointF值轉(zhuǎn)換成Point值,可以通過Point結(jié)構(gòu)包含的3種靜態(tài)方法: Ceiling,每個(gè)坐標(biāo)值取大于或等于原值的最小整數(shù)值; Round,每個(gè)坐標(biāo)值四舍五入取最接近的整數(shù)值; Truncate,每個(gè)坐標(biāo)值取小于或等于原值的最大整數(shù)值。,Size結(jié)構(gòu),Size結(jié)構(gòu) 用于定義Windows窗體應(yīng)用程序中的窗口、控件和其他矩形區(qū)域的大小。 具有寬度值Width和高度值He
5、ight屬性,也可以使用IsEmpty屬性來檢測(cè)Size是否為空。 初始化方法 直接指定高度值和寬度值,Size b = Size( 50,100 ); 通過一個(gè)Point變量來初始化, Size a = Size(Point(100,20) ); 判斷兩個(gè)Size變量是否相等可以使用其Equals方法,如 size1.Equals( size2 ); SizeF結(jié)構(gòu)與Size結(jié)構(gòu)類似PointF結(jié)構(gòu)與Point結(jié)構(gòu)。,Rectangle結(jié)構(gòu),Rectangle結(jié)構(gòu) 保存一個(gè)矩形區(qū)域的位置和大小,包含有X、Y、Width、Height、Size屬性,還有Top、Bottom、Left、Righ
6、t等屬性返回各邊坐標(biāo)值。 Rectangle的初始化 指定一個(gè)Point值和Size值,如 Rectangle c = Rectangle( point1,size1); 直接指定矩形位置、寬度和高度值,前兩個(gè)參數(shù)指定了矩形左上角的XY坐標(biāo)值,后兩個(gè)參數(shù)指定矩形的寬度和高度。如 Rectangle d = Rectangle( left1, top1, width1, height1); 包含的一些方法 Contains方法:確定一個(gè)矩形或一個(gè)點(diǎn)是否在當(dāng)前矩形區(qū)域內(nèi)。參數(shù)類型可以是Point結(jié)構(gòu),Rectangle結(jié)構(gòu)和點(diǎn)坐標(biāo)值。 Union方法:求兩個(gè)矩形的并集。參數(shù)是兩個(gè)要求并集的矩形,返
7、回一個(gè)包含其并集的Rectangle結(jié)構(gòu)。,Rectangle結(jié)構(gòu),Intersect方法:求兩個(gè)矩形的交集。參數(shù)為兩個(gè)求交的矩形,則返回一個(gè)表示其交集的Rectangle結(jié)構(gòu);參數(shù)為一個(gè)矩形,則獲得當(dāng)前矩形與參數(shù)矩形的交集Rectangle,用這個(gè)結(jié)果替換當(dāng)前矩形。 可以直接對(duì)Rectangle變量進(jìn)行等于=或不等于!=操作。 正在繪制或操作一個(gè)控件的工作區(qū)時(shí),常常使用Rectangle結(jié)構(gòu)。 窗體的工作區(qū)是位于標(biāo)題欄(或有菜單欄)下面,且在窗體邊界內(nèi)部的控件的一部分。Form類中有一個(gè)ClientRectangle屬性,用于獲取工作區(qū)的位置。如, Rectangle myRect = Cl
8、ientRectangle; 這里需要注意,狀態(tài)欄雖然覆蓋了工作區(qū),但并沒有減少工作區(qū)的總大小。在計(jì)算一個(gè)窗體的可視區(qū)域時(shí),要將工作區(qū)的大小值減去狀態(tài)欄的大小。 RectangleF結(jié)構(gòu):使用SizeF結(jié)構(gòu)和PointF結(jié)構(gòu)。,Graphics對(duì)象,在傳統(tǒng)的Windows窗口中,使用Device Context,即設(shè)備上下文,來進(jìn)行繪圖操作;而在.NET框架的Windows窗體中則使用繪圖對(duì)象進(jìn)行繪圖操作。 使用System:Drawing命名空間中的Graphics類封裝GDI+的繪圖對(duì)象,在Windows窗體中的所有繪圖操作(包括顯示文字)都必須通過這個(gè)類來進(jìn)行。Graphics類相當(dāng)于M
9、FC中的CDC類。 要使用Graphics進(jìn)行繪圖,首先必須獲得它的對(duì)象實(shí)例或是創(chuàng)建一個(gè)Graphics對(duì)象。最常用的方法是可以通過窗體的Paint事件來獲取對(duì)象實(shí)例,創(chuàng)建對(duì)象則通過CreateGraphics方法。,Graphics對(duì)象,Graphics類提供的許多繪圖方法有: Clear方法:使用一種指定的顏色填充整修繪圖表面。例如, Graphics g = this-CreateGraphics; g-Clear( this-BackColor ); /用當(dāng)前控件的背景色填充 繪制方法,一般都有多個(gè)重載,第一個(gè)參數(shù)一般都是繪制畫筆Pen類型: DrawClosedCurve:繪制閉合曲
10、線; DrawCurve:繪制曲線; DrawImage:繪制圖像;這里沒有使用Pen類型的參數(shù),第一個(gè)Image參數(shù)指定要繪制的圖像,第二個(gè)及之后的參數(shù)指定繪制的位置。 DrawLine:繪制直線;第二個(gè)及之后的參數(shù)是兩個(gè)點(diǎn)的表示。 DrawString:在指定位置以指定字體顯示字符串。 DrawRectangle和DrawRectangles:繪制一個(gè)或多個(gè)矩形。,Graphics對(duì)象,填充方法,一般都有多個(gè)重載,第一個(gè)參數(shù)一般都是填充畫刷Brush類型: FillRectangle:填充矩形;第二個(gè)參數(shù)可以是一個(gè)矩形結(jié)構(gòu)或者其他可表示矩形的方式(如Point+Size)。 FillClo
11、sedCurve:填充閉合曲線; FillRegion:填充一個(gè)區(qū)域。兩個(gè)參數(shù),第一個(gè)指定填充使用的畫刷(Brush類型),第二個(gè)指定填充區(qū)域(Region類型)。 FromImage方法:從參數(shù)指定的Image對(duì)象創(chuàng)建一個(gè)新的Graphics對(duì)象。 GetHDC方法:返回與Graphics相關(guān)聯(lián)的設(shè)備句柄。 ReleaseHDC方法:釋放設(shè)備句柄。,顏色Color,.NET框架中的顏色基于4種成分。除了三原色紅、綠、藍(lán)外,還有第4種稱為alpha的值用于指定顏色的透明度。其中每個(gè)成分都是一個(gè)字節(jié),在0255之間取值。 在GDI+中,用值類型Color結(jié)構(gòu)來表示顏色。在類和方法中要使用顏色的時(shí)
12、候,它們都需要Color結(jié)構(gòu)的一個(gè)實(shí)例。Color結(jié)構(gòu)中預(yù)定義了141種顏色,它們都使用靜態(tài)屬性來表示。 其中有一種Transparent顏色,其alpha成分設(shè)置為0,表示透明顏色 創(chuàng)建Color對(duì)象實(shí)例的方法 1. 創(chuàng)建Color實(shí)例最簡(jiǎn)單的方法就是通過一個(gè)靜態(tài)屬性來返回。如,Color newColor = Color:Red; 2. 可以使用默認(rèn)的構(gòu)造函數(shù)來創(chuàng)建Color實(shí)例,但是所產(chǎn)生的Color對(duì)象是純黑色的,并且不能修改為其他顏色。,顏色Color,3. 通過調(diào)用FromArgb靜態(tài)方法,它有4種版本。 Color sky = Color:FromArgb( 100, 200,
13、200, 255 ); 參數(shù)依次表示alpha成分,紅,綠,藍(lán)。 Color sky = Color:FromArgb( 200, 200, 255 ); 這里缺省了alpha成分,它隱式地設(shè)置為它的最大值,生成一種完全不透明的顏色。 Color sky = Color:FromArgb( 100, Color:Blue ); 這里使用一個(gè)現(xiàn)有的Color對(duì)象實(shí)例,只是修改了alpha成分的值。 Color sky = Color:FromArgb( 0 x64C8C8FF ); 使用一個(gè)形式為AARRGGBB的組合整數(shù)。,顏色Color,4. 通過調(diào)用FromKnownColor靜態(tài)方法,參
14、數(shù)為KnownColor枚舉類型的值。如 Color sky = Color:FromKnownColor(KnownColor:Blue); KnownColor枚舉類型:其值包含了Color結(jié)構(gòu)的所有141種顏色以及SystemColors類的26種顏色。 5. 通過調(diào)用FromName靜態(tài)方法,參數(shù)是一個(gè)字符串,這個(gè)字符串必須是KnownColor枚舉值的名稱。如,Color sky = Color:FromName( “Blue” ); Color屬性 具有4個(gè)只讀屬性,可以用于提取顏色的各種成分 A,返回顏色的alpha成分; R,紅色成分;G,綠色成分;B,藍(lán)色成分。,顏色Colo
15、r,其他有用的非靜態(tài)屬性 IsNamedColor,判斷顏色值是否在140個(gè)命名顏色中; IsKnownColor,判斷顏色值是否KnownColor枚舉的顏色; IsSystemColor,判斷顏色值是否SystemColor類的屬性值。 Windows系統(tǒng)使用一些系統(tǒng)范圍的顏色,如活動(dòng)邊框的顏色和標(biāo)題欄顏色等。.NET框架為這些系統(tǒng)顏色提供了一個(gè)封裝類SystemColors。 各種系統(tǒng)顏色以靜態(tài)屬性的形式保存在這個(gè)類中,可以直接通過類名來引用。具體系統(tǒng)顏色見表。,使用字體,在窗體或控件中都包含有Font屬性,表示窗體或控件當(dāng)前使用的字體。在窗體或控件創(chuàng)建時(shí),會(huì)使用系統(tǒng)的默認(rèn)字體值。 字體
16、使用Drawing:Font類封裝,通過創(chuàng)建這么個(gè)類的實(shí)例可以創(chuàng)建新的字體。 在創(chuàng)建時(shí)需要指定字體的名稱、大小和風(fēng)格,如果不指定字體風(fēng)格則將創(chuàng)建常規(guī)字體。 Font構(gòu)造函數(shù) 下面語(yǔ)句創(chuàng)建一個(gè)12磅的粗體隸書字體。 Font font1 = gcnew Font(“隸書”,12, FontStyle:Bold); 下面語(yǔ)句使用指定的度量單位而不是磅值來創(chuàng)建字體 Font font2 = gcnew Font(“隸書”,12, GraphiUnit:Document); 組合前兩個(gè)構(gòu)造函數(shù) Font font3 = gcnew Font(“隸書”,12, FontStyle:Bold, Graph
17、iUnit:Document);,使用字體,GraphicsUnit枚舉類型,用于指定給定數(shù)據(jù)的度量單位。 Display,將 1/75 英寸指定為度量單位。 Document,將文檔單位(1/300 英寸)指定為度量單位。 Inch,英寸。 Millimeter,毫米。 Pixel,設(shè)備像素。 Point,打印機(jī)點(diǎn)(1/72 英寸)。 World,通用單位。 .NET框架中字體風(fēng)格使用FontStyle枚舉類型定義。其值有以下一些,它們可以組合使用: Bold:設(shè)置字體風(fēng)格為粗體; Italic:設(shè)置字體風(fēng)格為斜體; Regular:常規(guī)字體; Strikeout:字體帶刪除線; Under
18、line:字體帶下劃線。,使用字體,一個(gè)字體所具有的屬性是只讀的,修改任何一個(gè)屬性都將產(chǎn)生一個(gè)新的字體。最常用屬性有: Bold,字體是否為粗體; FontFamily,F(xiàn)ontFamily枚舉值,確定字體的字符集; Height,字體高度; Italic,字體是否為斜體; Size,字體大?。?SizeInPoints,字體的磅值,不考慮當(dāng)前的Unit屬性設(shè)置; Strikeout,字體是否有刪除線; Style,應(yīng)用于這個(gè)字體的所有FontStyle枚舉值; Underline,字體是否有下劃線; Unit,GraphicsUnit枚舉值,確定Height、Width和Size屬性使用的單
19、位。 字體示例程序,使用畫筆,用Pen類型封裝,用于繪制圖形??梢允褂眠@個(gè)類來創(chuàng)建一個(gè)指定顏色、默認(rèn)寬度的畫筆對(duì)象。 構(gòu)造函數(shù) Pen penRed = gcnew Pen(Color:Red); 這里通過參數(shù)指定畫筆顏色,初始寬度默認(rèn)為1。 Pen PenRed = gcnew Pen(Color:Red, 10); 參數(shù)指定畫筆顏色和寬度。 Pen PenRed = gcnew Pen(brushRed); 參數(shù)中使用畫刷對(duì)象來指定畫筆的模式。 Pen PenRed = gcnew Pen(brushRed, 5); 參數(shù)中使用畫刷來指定畫筆模式,同時(shí)指定寬度。,使用畫筆,Pen類型可以動(dòng)
20、態(tài)修改屬性,改變屬性時(shí)不必重新創(chuàng)建Pen對(duì)象。Pen類常用屬性有: Alignment,指定Pen對(duì)象的對(duì)齊方式;是一個(gè)PenAlignment枚舉值。 Brush,獲取或設(shè)置用于確定此 Pen對(duì)象的屬性的 Brush對(duì)象 ; Color,獲取或設(shè)置畫筆顏色; EndCap,指定線條末端出現(xiàn)的形狀。這是一個(gè)LineCap枚舉值,默認(rèn)為L(zhǎng)ineCap:Flat。 LineJoin,指定此 Pen對(duì)象繪制的兩條連續(xù)直線終點(diǎn)之間的聯(lián)接樣式。這是一個(gè)LineJoin枚舉值。 PenType,獲取用此 Pen對(duì)象繪制的直線的樣式,是一個(gè) PenType枚舉值。 StartCap,指定線條起點(diǎn)出現(xiàn)的形狀。
21、默認(rèn)為L(zhǎng)ineCap:Flat。 Width,獲取或設(shè)置畫筆繪制的線條的寬度。,使用畫筆,一些枚舉類型(System:Drawing:Drawing2D 命名空間 ) PenAlignment枚舉類型:指定相對(duì)于理論上、零寬度的線條的 Pen對(duì)象的對(duì)齊方式。畫筆寬度的中點(diǎn)根據(jù)這個(gè)枚舉值相對(duì)于所繪制的線條對(duì)齊 。 Center,在線條邊界的中間畫直線。 Inset,在構(gòu)成一條曲線或者一個(gè)圖形邊界的線條內(nèi)部畫直線。 Left,指定被定位于所繪制的線條的左側(cè)。 Outset,指定被定位于所繪制的線條的外側(cè)。 Right,指定被定位于所繪制的線條的右側(cè)。 LineCap枚舉類型:用于指定如何繪制線條的
22、端點(diǎn)。 AnchorMask,一個(gè)掩碼值,測(cè)試LineCap值是否指定了一個(gè)錨頭帽。 ArrowAnchor,指定箭頭狀錨頭帽;DiamondAnchor,指定菱形錨頭帽。 Custom,指定自定義線帽。 Flat,不畫帽,默認(rèn)值;NoAnchor,沒有錨,與Flat有同樣的效果。 Round,指定圓線帽;RoundAnchor,指定圓錨頭帽。 Square,指定方線帽;SquareAnchor,指定方錨頭帽。 Triangle,指定三角線帽。,使用畫筆,LineJoin枚舉類型:指定如何連接連續(xù)的線條。 Bevel,指定成斜角的聯(lián)接。這將產(chǎn)生一個(gè)斜角。 Miter,指定斜聯(lián)接。擴(kuò)展線條的外界
23、,直到它們相接觸。 MiterClipped,指定斜聯(lián)接。這種方式要受Pen類的MiterLimit屬性的限制。 Round,指定圓形聯(lián)接。這將在兩條線之間產(chǎn)生平滑的圓弧。 PenType枚舉類型:指定用來填充線條的 Pen對(duì)象填充類型 。 HatchFill,指定陰影填充。 LinearGradient,指定線性漸變填充。 PathGradient,指定路徑漸變填充。 SolidColor,指定實(shí)填充。 TextureFill,指定位圖紋理填充。,使用畫筆,Pen類的DashStyle屬性:設(shè)置或獲取畫筆的風(fēng)格。其屬性值在System:Drawing:Drawing2D命名控件中的DashS
24、tyle枚舉類型中定義??扇≈涤校?Custom:自定義風(fēng)格; Dash:劃線, DashDot:劃線點(diǎn), DashDotDot:劃線點(diǎn)點(diǎn), Dot:點(diǎn)線, Solid:實(shí)線,,使用畫筆,SystemPens類 Windows系統(tǒng)顏色畫筆,用于創(chuàng)建與用戶界面和系統(tǒng)顏色相匹配的筆。它的每個(gè)靜態(tài)屬性都返回一個(gè)Pen對(duì)象。 下面這行語(yǔ)句創(chuàng)建一個(gè)Pen對(duì)象,將它初始化為用戶加亮顯示文本時(shí)首選的顏色。 Pen highlightPen = SystemPens:HighlightText; SystemPens的一些靜態(tài)屬性 Control,控件背景顏色; ActiveCaptionText,活動(dòng)窗口標(biāo)
25、題欄的文本顏色; HighlightText,加亮顯示的文本顏色; WindowText,窗口的文本顏色; WindowFrame,窗口的圖文框顏色。,使用畫筆,FromSystemColor靜態(tài)方法:可以根據(jù)作為參數(shù)傳遞給這個(gè)方法的一個(gè)Color值來創(chuàng)建畫筆。如, Pen pen1 = gcnew SystemPens:FromSystemColor(SystemColors:Window); 從SystemPens類得到的所有Pen的引用都是1個(gè)像素的默認(rèn)寬度,對(duì)它們不能進(jìn)行修改。如果要使用可選擇寬度或類型的畫筆,只能使用Pen類來創(chuàng)建。 Pens類 提供了很多預(yù)定義顏色的畫筆對(duì)象,它們以
26、靜態(tài)屬性的形式保存。例如要?jiǎng)?chuàng)建一個(gè)紅色畫筆,可以調(diào)用Pens :Red屬性。如,Pen pen1 = Pens:Red; Pens類中顏色命名規(guī)則與Color類中相同,知道顏色名字則可以直接調(diào)用。,使用畫刷,顯示文字時(shí)除了指定字體外,還要指定畫刷,另外在圖形的填充時(shí)也需要使用畫刷,同時(shí)畫筆也可以基于畫刷來創(chuàng)建。 使用Brush類表示,這是一個(gè)抽象類,不能直接用來創(chuàng)建畫刷實(shí)例。在.NET框架中提供了一些派生類,可以使用它們來創(chuàng)建畫刷對(duì)象。 在System:Drawing命名空間中定義了兩個(gè)最基本的畫刷:SolidBrush和TextureBrush。其他的3種用于更高級(jí)的效果,在System:D
27、rawing:Drawing2D命名空間中可以找到。 SolidBrush類,使用一種純色來填充區(qū)域; 創(chuàng)建方法 SolidBrush skyBrush =gcnew SolidBrush(Color:Blue); 只有一個(gè)Color屬性,用于獲取或設(shè)置畫刷顏色。,使用畫刷,TextureBrush類,使用一個(gè)圖像來填充區(qū)域; 可以使用整個(gè)圖像或者僅僅是圖像的一部分來構(gòu)造畫刷;也可以旋轉(zhuǎn)或按比例調(diào)整整個(gè)圖像來滿足要求。 構(gòu)造方法:最簡(jiǎn)單的就是傳入一個(gè)圖像。如, TextureBrush br = gcnew TextureBrush(“C:image1.bmp”); 支持多種圖像格式(bmp,
28、gif,jpeg等)。 常用屬性 WrapMode,指定這個(gè)畫筆的換行模式。這是個(gè)WrapMode枚舉值。 WrapMode枚舉類型:用于確定這個(gè)畫刷填充區(qū)域的方式。 Clamp,不平鋪,畫刷圖像只顯示一次。 Tile,默認(rèn)值,平鋪畫刷圖像填充整個(gè)區(qū)域。 TileFlipX,平鋪畫刷圖像填充整個(gè)區(qū)域。每隔一列水平反轉(zhuǎn)這個(gè)圖像。 TileFlipY,平鋪畫刷圖像填充整個(gè)區(qū)域。每隔一行垂直反轉(zhuǎn)這個(gè)圖像。 TileFlipXY,結(jié)合上兩個(gè)枚舉值的行為。,使用畫刷,HatchBrush類,用預(yù)定義的陰影圖案來填充區(qū)域; 每種陰影模式由兩種顏色組成:背景和前景??梢酝ㄟ^這個(gè)畫刷類來指定這兩種顏色和陰影模
29、式的類型。 LinearGradientBrush類,用一個(gè)線性漸變區(qū)來填充區(qū)域; 這個(gè)畫刷使用從一種色調(diào)漸變到另一種色調(diào)的顏色填充區(qū)域。這里畫刷中保存了進(jìn)行漸變的兩種顏色。 PathGradientBrush類,用一個(gè)路徑漸變區(qū)來填充區(qū)域。 使用一組漸變的顏色來填充區(qū)域。與LinearGradientBrush類不同的是,這個(gè)畫刷為漸變區(qū)提供了更靈活的形狀。,使用畫刷,標(biāo)準(zhǔn)畫刷Brushes類 包含了所有標(biāo)準(zhǔn)顏色的畫刷,Color類中每一個(gè)預(yù)定義的顏色都在這個(gè)類中有一個(gè)對(duì)應(yīng)的畫刷。這些標(biāo)準(zhǔn)畫刷以靜態(tài)屬性保存在Brushes類中,可以直接引用。 例如,Brush brushRed = Brus
30、hes:Red; 系統(tǒng)顏色畫刷SystemBrushes類 對(duì)應(yīng)Windows的系統(tǒng)顏色,這些畫刷也做為靜態(tài)屬性在SystemBrushes類中保存。,顯示文字,Windows窗體程序中文字的顯示通過Graphics類的DrawingString方法進(jìn)行。 調(diào)用這個(gè)方法時(shí)要指定顯示的字符串、使用的字體、使用的畫刷以及顯示的位置。 可以通過創(chuàng)建豐富多彩的畫刷來實(shí)現(xiàn)文字的特效顯示。 代碼示例 Image img = Image:FromFile(“sample.jpg”); TextureBrush tb = gcnew TextureBrush(img); Font f = gcnew Font
31、(“隸書”, 72); Graphics gg = e-Graphics; gg-DrawString( “VS2005”, f, tb, 10, 80 ); 可以使用StringFormat類型對(duì)象來改變文字顯示方向,作為一個(gè)參數(shù)放在位置參數(shù)后面。 設(shè)置這個(gè)類的FormatFlags屬性,其值由StringFormatFlags枚舉定義。,顯示文字,StringFormat類為DrawString和其他方法指定文本布局的選項(xiàng)。 具有用于控制格式選項(xiàng)的屬性,常見的有: Alignment,指定水平的文本的對(duì)齊方式。是一個(gè)StringAlignment枚舉值。 FormatFlags,指定格式化
32、信息。是一個(gè)StringFormatFlags枚舉值。 LineAlignment,指定垂直文本(也就是行)的對(duì)齊方式。是一個(gè)StringAlignment枚舉值。 StringAlignment枚舉類型:指定文本字符串相對(duì)于其布局矩形的對(duì)齊方式 。 Center,指定文本在布局矩形中居中對(duì)齊。 Far,指定文本遠(yuǎn)離布局矩形的原點(diǎn)位置對(duì)齊。在左到右布局中,遠(yuǎn)端位置是右。在右到左布局中,遠(yuǎn)端位置是左。 Near,指定文本靠近布局對(duì)齊。在左到右布局中,近端位置是左。在右到左布局中,近端位置是右。,顯示文字,StringFormatFlags枚舉類型:指定文本字符串的顯示和布局信息 ,可以組合使用。
33、 DirectionRightToLeft,指定文本從右到左排列。 DirectionVertical,指定文本垂直排列。 DisplayFormatControl,作為格式符號(hào),顯示指定的格式字符。 FitBlackBox,指定任何標(biāo)志符號(hào)的任何部分都不突出邊框。在默認(rèn)情況下,需要在邊緣處可見時(shí),一些標(biāo)志符號(hào)會(huì)稍微突出邊框。例如,在 一些字體中,當(dāng)小寫斜體的 f 與邊框的最左邊對(duì)齊時(shí),f 的下半部分會(huì)稍微突出到邊框左邊緣之左。設(shè)置此標(biāo)記將確保任何繪圖都不會(huì)超出邊框,但是將導(dǎo)致文本的相鄰行的對(duì)齊邊緣看上去不齊。,顯示文字,LineLimit,在格式化的矩形中只布置整行。默認(rèn)情況下,這種布置要繼
34、續(xù)到文本的結(jié)尾為止,或者到由于剪輯而不再有可見的行為止,看哪一種情況先發(fā)生。注意,此默認(rèn)設(shè)置允許不是行高整數(shù)倍的格式化矩形將最后一行部分地遮住。若要確??吹降亩际钦校?qǐng)指定此值,并仔細(xì)地提供格式化矩形,使其高度至少為一個(gè)行高。 。 MeasureTrailingSpaces,在默認(rèn)情況下,MeasureString方法返回的邊框都將排除每一行結(jié)尾處的空格。設(shè)置此標(biāo)記以便在測(cè)定時(shí)將空格包括進(jìn)去 NoClip,允許顯示標(biāo)志符號(hào)的伸出部分和延伸到邊框外的未換行文本。在默認(rèn)情況下,延伸到邊框外側(cè)的所有文本和標(biāo)志符號(hào)部分都被剪裁。 NoFontFallback,對(duì)于請(qǐng)求的字體中不支持的字符,禁用回退到
35、可選字體。缺失的任何字符都用缺失標(biāo)志符號(hào)的字體顯示,通常是一個(gè)空的方塊。 NoWrap,在矩形中進(jìn)行格式化時(shí)禁用文本換行。當(dāng)傳遞的是點(diǎn)而不是矩形時(shí),或者指定的矩形行長(zhǎng)為零時(shí),已隱含此標(biāo)記。,顯示圖像,使用Image類封裝基本的圖像操作。 Image類是個(gè)抽象基類,不能直接用來創(chuàng)建對(duì)象實(shí)例。提供了幾個(gè)靜態(tài)方法用來從文件中載入圖像,如FromFile和FromStream方法,支持多種圖像文件格式(bmp、jpg和gif等) .NET框架提供了幾個(gè)派生類,可以用于創(chuàng)建對(duì)象實(shí)例 Bitmap類:封裝了GDI+位圖(.bmp文件格式),可以使用這個(gè)類來操作位圖。 創(chuàng)建位圖實(shí)例時(shí),可以指定位圖文件路徑名
36、,創(chuàng)建的新對(duì)象就會(huì)自動(dòng)裝入位圖,然后可以調(diào)用Graphics類的DrawImage方法來顯示位圖。 Bitmap bmp = gcnew Bitmap(“sample.jpg”); this-CreateGraphics() -DrawImage(bmp, 100,100 );,顯示圖像,可以在顯示圖像時(shí)進(jìn)行縮放操作。比如說可以使用一個(gè)Rectangle變量來指定位圖位置和大小。 Rectangle rec = gcnew Rectangle(10, 10, 100, 100); this-CreateGraphics() -DrawImage(bmp,rec); 可以只顯示部分位圖。比如說切取位圖的左上角一塊然后在目標(biāo)矩形變量中顯示。 Clone方法:復(fù)制位圖; GetPixel和SetPixel方法:獲取或設(shè)置位圖中特定像素的顏色; SetResolution方法:重新設(shè)置位圖大?。?MakeTransparent方法:把
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省濱州市三校聯(lián)考2025屆高三暑假自主學(xué)習(xí)測(cè)試數(shù)學(xué)試題含解析
- 公共交通車輛租賃服務(wù)合同
- 智慧農(nóng)業(yè)技術(shù)創(chuàng)新助力鄉(xiāng)村振興
- 委托合同范本
- 體育館物業(yè)管理委托合同范本
- 商業(yè)地產(chǎn)買賣合同細(xì)則
- 標(biāo)準(zhǔn)茶葉購(gòu)銷合同模板簡(jiǎn)
- 產(chǎn)品設(shè)計(jì)服務(wù)合同范本
- 血液透析中低血壓處理
- 初中數(shù)學(xué)第一章 整式的乘除單元測(cè)試2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)下冊(cè)
- 九宮數(shù)獨(dú)題200題及答案
- 2023年大學(xué)生創(chuàng)業(yè)的商業(yè)計(jì)劃書模板(四篇)
- 夜間施工措施
- GB/T 1229-2006鋼結(jié)構(gòu)用高強(qiáng)度大六角螺母
- GA 137-2007消防梯
- 通用報(bào)價(jià)單模板
- 血精的診治課件
- 考研考博-英語(yǔ)-北京建筑大學(xué)考試押題三合一+答案詳解4
- 《三角形的分類》-完整版課件
- 吊裝安全心得體會(huì)(6篇)
- DB52-T 1057-2022+農(nóng)村生活污水處理技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論