第13章 二維圖形圖像處理_第1頁
第13章 二維圖形圖像處理_第2頁
第13章 二維圖形圖像處理_第3頁
第13章 二維圖形圖像處理_第4頁
第13章 二維圖形圖像處理_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

教育部普通高等教育十二五國家級(jí)規(guī)劃教材

《C#程序設(shè)計(jì)及應(yīng)用教程》第3版

(包括簡(jiǎn)化版:《C#程序設(shè)計(jì)教程》第3版)

第13章二維圖形圖像處理2Ch13二維圖形圖像處理13.1圖形圖像處理基礎(chǔ)13.2圖形處理13.3圖像處理13.4利用畫筆繪制圖形圖像313.1圖形圖像處理基礎(chǔ)WPF采用“保留模式”來負(fù)責(zé)圖形圖像的呈現(xiàn),其內(nèi)部用一組序列化繪圖狀態(tài)來保存這些對(duì)象,這樣就可以讓W(xué)PF自動(dòng)進(jìn)行重繪,而不再需要程序員編程去維護(hù)這些狀態(tài)。WPF使用矢量圖和與設(shè)備無關(guān)的技術(shù)來處理二維、三維圖形的顯示,并能根據(jù)本機(jī)的圖形硬件(顯卡、GPU)自動(dòng)選擇合適的呈現(xiàn)技術(shù)13.1.1與二維三維圖形圖像處理相關(guān)的類System.Windows.Media.Imaging命名空間:提供了對(duì)圖像進(jìn)行編碼和解碼的類。System.Windows.Controls命名空間:提供除了形狀控件外的其他各種WPF控件,這些控件都是從Visual類派生的,包括Image控件以及我們?cè)谇懊娴恼鹿?jié)中學(xué)習(xí)過的其他各種控件,這些控件按功能進(jìn)行了分類,并提供了專門的實(shí)現(xiàn)。System.Windows.Shapes命名空間:提供了基本的幾何圖形形狀控件,這些控件都是從Shape類派生的,而由于Shape又是從Visual派生而來的,所以這些控件本質(zhì)上也都是從Visual派生的。413.1.1與二維三維圖形圖像處理相關(guān)的類Geometry及其派生類Geometry類在System.Windows.Media命名空間內(nèi),該類是定義二維圖形形狀的抽象基類。Shape及其派生類Shape類在System.Windows.Shapes命名空間內(nèi),該類是在FrameworkElement級(jí)別定義和繪制基本幾何圖形形狀的抽象基類。Drawing及其派生類Drawing類在System.Windows.Media命名空間內(nèi)。該類是描述二維繪圖的抽象基類。13.1.1與二維三維圖形圖像處理相關(guān)的類Visual及其派生類Visual類也在System.Windows.Media命名空間內(nèi)。

Visual類提供的功能包括:輸出顯示:呈現(xiàn)Visual對(duì)象的持久的序列化繪圖內(nèi)容。轉(zhuǎn)換:對(duì)可視對(duì)象執(zhí)行轉(zhuǎn)換。剪輯:為Visual對(duì)象提供剪輯區(qū)域支持。命中測(cè)試:確定指定的坐標(biāo)點(diǎn)或幾何圖形是否包含在可視對(duì)象的邊界內(nèi)。邊界框計(jì)算:確定Visual對(duì)象的邊框。TileBrush及其派生類TileBrush類也在System.Windows.Media命名空間內(nèi),該類描述使用一個(gè)或多個(gè)圖塊繪制區(qū)域的方法。613.2圖形處理圖形處理簡(jiǎn)介圖形處理是指對(duì)二維矢量幾何圖形的處理,由于矢量圖形是根據(jù)幾何圖形的特征來計(jì)算并繪制的,因此繪制的矢量圖形不會(huì)有任何失真。在WPF中,有兩種定義二維幾何圖形形狀的技術(shù),一種是用Geometry對(duì)象實(shí)現(xiàn),另一種是用Shape對(duì)象實(shí)現(xiàn)。Geometry對(duì)象只定義圖形的形狀但自身沒有繪制功能,適用于將其作為XAML資源的場(chǎng)合;Shape對(duì)象除了定義圖形的形狀外其自身還具有繪制功能,適用于直接對(duì)某種圖形的形狀進(jìn)行界面級(jí)別處理的場(chǎng)合。713.2.1二維幾何圖形和路徑標(biāo)記語法System.Windows.Media命名空間下的Geometry類是定義二維幾何圖形的抽象基類,下表列出了其派生類。8圖形形狀類說明簡(jiǎn)單幾何圖形LineGeometry定義一條由兩個(gè)點(diǎn)連接的直線RectangleGeometry定義一個(gè)矩形EllipseGeometry定義一個(gè)橢圓路徑幾何圖形PathGeometry用路徑定義一系列基本圖形StreamGeometry用流定義一系列基本圖形復(fù)合幾何圖形CombinedGeometry按照合并規(guī)則將兩個(gè)圖形合并在一起GeometryGroup將多個(gè)圖形組合在一起路徑幾何圖形9路徑幾何圖形是指把一系列圖形按照某種方式組合在一起構(gòu)成的形體。PathGeometry和StreamGeometry提供了描繪由直線、弧線和曲線組成的多個(gè)復(fù)雜圖形的方法。Path控件專門用于繪制定義的路徑幾何圖形。該類從Shape類繼承的,利用Geometry對(duì)象來定義圖形,然后再通過它的下列屬性實(shí)現(xiàn)繪制功能。Fill屬性:描述用哪種畫筆(Brush)填充封閉的形狀。Stroke屬性:描述用鋼筆(Pen類的實(shí)例)的哪種Color或Brush繪制形狀的輪廓。StrokeThickness屬性:描述輪廓的粗細(xì)。PathGeometryPathGeometry是PathFigure對(duì)象的集合,用于創(chuàng)建基本形狀以及組合后的復(fù)雜形狀。

PathFigureCollection中的每個(gè)PathFigure由一個(gè)或多個(gè)線段組成,下表列出了這些線段的類型及其含義。10線段類型說明ArcSegment在兩個(gè)點(diǎn)之間創(chuàng)建一條橢圓弧線BezierSegment在兩個(gè)點(diǎn)之間創(chuàng)建一條三次方貝塞爾曲線LineSegment在兩個(gè)點(diǎn)之間創(chuàng)建一條直線PolyBezierSegment創(chuàng)建一系列三次方貝塞爾曲線PolyLineSegment創(chuàng)建一系列直線PolyQuadraticBezierSegment創(chuàng)建一系列二次貝塞爾曲線QuadraticBezierSegment創(chuàng)建一條二次貝塞爾曲線PathGeometry例13-1:使用PathGeometry創(chuàng)建一個(gè)三角形。11StreamGeometryStreamGeometry是定義一個(gè)可包含曲線、弧線和直線的復(fù)雜幾何形狀。PathGeometry和StreamGeometry的選擇原則:當(dāng)需要高效率描繪復(fù)雜的幾何圖形而且不使用數(shù)據(jù)綁定、動(dòng)畫或修改時(shí),可考慮使用StreamGeometry,否則使用PathGeometry。凡是能用StreamGeometry實(shí)現(xiàn)的功能也都可以用PathGeometry來實(shí)現(xiàn)。12路徑標(biāo)記語法路徑標(biāo)記語法是StreamGeometry和PathGeometry的一種簡(jiǎn)化的XAML命令描述形式。13命令類型說明移動(dòng)(M或m)參數(shù):startPoint示例:M10,20功能:指定新圖形的起點(diǎn)。大寫的M表示startPoint是絕對(duì)值;小寫的m表示startPoint是相對(duì)于上一個(gè)點(diǎn)的偏移量,如果是(0,0),則表示不存在偏移。當(dāng)在移動(dòng)命令之后列出多個(gè)點(diǎn)時(shí),即使指定的是線條命令,也將繪制出連接這些點(diǎn)的線直線(L或l)參數(shù):endPoint示例:L20,30功能:在當(dāng)前點(diǎn)與指定的終點(diǎn)之間創(chuàng)建一條直線水平線(H或h)參數(shù):x示例:M10,50H90功能:在當(dāng)前點(diǎn)與指定的x坐標(biāo)之間創(chuàng)建一條水平線。x表示線的終點(diǎn)的x坐標(biāo)(double類型)路徑標(biāo)記語法命令類型說明垂直線(V或v)參數(shù):y示例:M10,50V200功能:在當(dāng)前點(diǎn)與指定的y坐標(biāo)之間創(chuàng)建一條垂直線。y表示線的終點(diǎn)的y坐標(biāo)(double類型)二次貝塞爾曲線(Q或q)參數(shù):p1endPoint示例:M10,100Q200,200300,100功能:通過使用指定的控制點(diǎn)(p1)在當(dāng)前點(diǎn)與指定的終點(diǎn)之間創(chuàng)建一條二次貝塞爾曲線平滑的二次貝塞爾曲線(T或t)參數(shù):p2endPoint示例:T100,200,300,200功能:在當(dāng)前點(diǎn)與指定的終點(diǎn)之間創(chuàng)建一條二次貝塞爾曲線。控制點(diǎn)假定為前一個(gè)命令的控制點(diǎn)相對(duì)于當(dāng)前點(diǎn)的反射。如果前一個(gè)命令不存在,或者前一個(gè)命令不是二次貝塞爾曲線命令或平滑的二次貝塞爾曲線命令,則此控制點(diǎn)就是當(dāng)前點(diǎn)。p2指曲線的控制點(diǎn),用于確定曲線的起始正切值。endPoint指曲線將繪制到的點(diǎn)14命令類型說明三次方貝塞爾曲線(C或c)參數(shù):p1p2endPoint示例:M10,100C100,0200,200300,100功能:通過使用兩個(gè)指定的控制點(diǎn)(p1和p2)在當(dāng)前點(diǎn)與指定的終點(diǎn)之間創(chuàng)建一條三次方貝塞爾曲線。平滑的三次方貝塞爾曲線(S或s)參數(shù):p2endPoint示例:M10,100C35,0135,0160,100S285,200310,100功能:在當(dāng)前點(diǎn)與指定的終點(diǎn)之間創(chuàng)建一條三次方貝塞爾曲線。第一個(gè)控制點(diǎn)假定為前一個(gè)命令的第二個(gè)控制點(diǎn)相對(duì)于當(dāng)前點(diǎn)的反射。如果前一個(gè)命令不存在,或者前一個(gè)命令不是三次方貝塞爾曲線命令或平滑的三次方貝塞爾曲線命令,則假定第一個(gè)控制點(diǎn)就是當(dāng)前點(diǎn)。第二個(gè)控制點(diǎn),即曲線終端的控制點(diǎn)由p2指定橢圓弧線(A或a)參數(shù):size,rotationAngle,isLargeArcFlag,sweepDirectionFlag,endPoint示例:M10,100A100,504510200,100功能:在當(dāng)前點(diǎn)與指定的終點(diǎn)之間創(chuàng)建一條橢圓弧線。size:弧的X軸半徑和Y軸半徑;rotationAngle:橢圓的旋轉(zhuǎn)度數(shù);isLargeArcFlag:如果弧線的角度應(yīng)大于或等于180度,則設(shè)置為1,否則設(shè)置為0;sweepDirectionFlag:如果弧線按照正角方向繪制,則設(shè)置為1,否則設(shè)置為0;endPoint:弧線將繪制到的點(diǎn)關(guān)閉(Z或z)示例:M10,100L100,100100,50ZM10,10100,10100,40Z功能:終止當(dāng)前的圖形并創(chuàng)建一條連接當(dāng)前點(diǎn)和圖形起點(diǎn)的線。此命令用于在圖形的最后一個(gè)線段與第一個(gè)線段之間創(chuàng)建一條連線(轉(zhuǎn)角)15路徑標(biāo)記語法13.2.2基本圖形直線LineGeometry類用StartPoint和EndPoint定義直線的起點(diǎn)和終點(diǎn),也可以用路徑標(biāo)記語法來描述它。例13-2:繪制一條數(shù)學(xué)上使用的坐標(biāo)軸,即讓坐標(biāo)系的原點(diǎn)位于窗口中心,橫向從左到右為x正方向,縱向從下到上為y軸正方向,然后在此坐標(biāo)系統(tǒng)下繪制一條從(0,0)點(diǎn)到(20,20)的直線。1613.2.2基本圖形折線折線是將一系列的點(diǎn)依次用直線相連,當(dāng)這些點(diǎn)之間的距離很近時(shí),其效果與曲線就很相似了。有兩種繪制折線的方法,一種是用LineGeometry實(shí)現(xiàn),另一種是用PolyLine實(shí)現(xiàn)。例13-3:根據(jù)正弦函數(shù)計(jì)算出多個(gè)點(diǎn),然后將這些點(diǎn)用直線依次相連。1713.2.2基本圖形矩形RectangleGeometry類使用System.Windows命名空間下的Rect結(jié)構(gòu)來定義矩形的輪廓,該結(jié)構(gòu)指定矩形的左上角位置以及矩形的高度和寬度,另外還可以通過設(shè)置RadiusX和RadiusY屬性創(chuàng)建圓角矩形。例13-4:演示矩形的基本繪制方法。運(yùn)行效果如圖所示。1813.2.2基本圖形橢圓EllipseGeometry類通過中心點(diǎn)(Center屬性)、x半徑(RadiusX屬性)和y半徑(RadiusY)來定義橢圓的形狀。當(dāng)x半徑和y半徑相同時(shí),其效果就是一個(gè)圓。例13-5:演示橢圓的基本繪制方法。運(yùn)行效果如圖所示。1913.2.2基本圖形多邊形多邊形是由3條或3條以上的邊組成的閉合圖形,包括規(guī)則多邊形和不規(guī)則多邊形。有兩種技術(shù)來實(shí)現(xiàn),一種是用PathGeometry或者StreamGeometry,另一種是用繼承自Shape的Polygen或者PolyLine。例13-6:演示用C#實(shí)現(xiàn)任意數(shù)量的規(guī)則多邊形的基本繪制方法。運(yùn)行效果如圖所示。2013.2.2基本圖形曲線曲線包括橢圓弧、二次貝塞爾曲線、三次貝塞爾曲線等。例13-7:演示橢圓弧、二次貝塞爾曲線、三次貝塞爾曲線的基本繪制方法。運(yùn)行效果如圖所示。2113.2.3復(fù)合圖形組合圖形(GeometryGroup)GeometryGroup類創(chuàng)建它所包含的Geometry對(duì)象的組合體,但不合并其包含的區(qū)域??梢韵騁eometryGroup中添加任意數(shù)量的Geometry對(duì)象,然后再用Path將組合后的結(jié)果呈現(xiàn)出來。GeometryGroup的FillRule屬性獲取或設(shè)置如何組合GeometryGroup中所包含對(duì)象的相交區(qū)域。例13-8:演示GeometryGroup的基本用法以及FillRule的含義。運(yùn)行效果如圖所示。2213.2.3復(fù)合圖形合并圖形(CombinedGeometry)CombinedGeometry對(duì)象和該對(duì)象的Combine方法用布爾操作合并圖形,使用它可以合并兩個(gè)幾何圖形所定義的區(qū)域,合并后沒有封閉區(qū)域的Geometry對(duì)象將被丟棄。例13-9:演示CombinedGeometry的基本用法。2313.2.4將格式化文本轉(zhuǎn)換為圖形在有些應(yīng)用中,我們可能需要將文本字符串轉(zhuǎn)換為離散的路徑幾何圖形,然后再對(duì)其做進(jìn)一步的處理,例如繪制空心字、沿文字的筆畫進(jìn)行移動(dòng)的動(dòng)畫等。將文本轉(zhuǎn)換為Geometry對(duì)象的關(guān)鍵是使用FormattedText對(duì)象,該對(duì)象用于創(chuàng)建格式化的文本。2413.2.4將格式化文本轉(zhuǎn)換為圖形例13-10:演示如何將格式化文本轉(zhuǎn)換為Geometry對(duì)象,并演示如何利用它繪制空心字。運(yùn)行效果如圖所示。2513.3圖像處理圖像處理簡(jiǎn)介圖像是指按照某種格式編碼存儲(chǔ)的圖,一般用與設(shè)備無關(guān)的像素保存圖像中的每個(gè)點(diǎn)的信息(紅色通道、藍(lán)色通道、綠色通道以及透明度),圖像編碼格式不同,每個(gè)像素點(diǎn)占用的字節(jié)數(shù)也不一定相同。圖像處理是指對(duì)各種圖像格式的文件以及繪圖結(jié)果進(jìn)行處理,包括圖像的編碼、解碼、元數(shù)據(jù)存儲(chǔ)和讀取、創(chuàng)建、加載、保存、壓縮、解壓縮、顯示、繪制、剪裁、合并、平鋪、拉伸、旋轉(zhuǎn)、縮放、蒙板以及將矢量圖形轉(zhuǎn)換為圖像等。2613.3.1圖像處理常用類BitmapSource類用于對(duì)圖像進(jìn)行解碼和編碼,它是WPF圖像處理管線的基本構(gòu)造塊。該類表示具有特定大小和分辨率的單個(gè)不變的像素集,可以用它表示多幀圖像中的單個(gè)幀,也可以表示在BitmapSource上執(zhí)行轉(zhuǎn)換的結(jié)果。BitmapFrame類BitmapFrame是BitmapSource派生類中比較常用的類之一,該類用于存儲(chǔ)圖像格式的實(shí)際位圖數(shù)據(jù)。利用BitmapFrame能將各種格式的圖像轉(zhuǎn)換為位圖,然后對(duì)其進(jìn)行處理,比如灰度處理、旋轉(zhuǎn)、縮放、裁切等。2713.3.1圖像處理常用類BitmapImage類BitmapImage也是從BitmapSource類派生類的,它是一個(gè)為了加載XAML而優(yōu)化的專用BitmapSource。BitmapImage的特點(diǎn)是只加載自動(dòng)將縮放后的結(jié)果,而不是先在內(nèi)存中緩存原始大小的圖像然后再對(duì)其進(jìn)行縮放,所以該方式與直接指定Image的寬度或高度相比能大大節(jié)省內(nèi)存的容量。2813.3.1圖像處理常用類從BitmapSource繼承的其他類ColorConvertedBitmap類:更改BitmapSource的顏色空間。FormatConvertedBitmap類:為BitmapSource提供像素格式轉(zhuǎn)換功能。CroppedBitmap類:裁剪一個(gè)BitmapSource。CachedBitmap類:為BitmapSource提供緩存功能。RenderTargetBitmap類:將Visual對(duì)象轉(zhuǎn)換為位圖。WriteableBitmap類:提供一個(gè)可寫入并可更新的BitmapSource。2913.3.2圖像的編碼和解碼WPF提供了多種格式的圖像編碼器和解碼器30圖像格式文件擴(kuò)展名編碼器解碼器位圖圖像(BMP).bmpBmpBitmapEncoderBmpBitmapDecoder聯(lián)合圖像專家組圖像(JPEG).jpgJpegBitmapEncoderJpegBitmapDecoder可移植網(wǎng)絡(luò)圖形圖像(PNG).pngPngBitmapEncoderPngBitmapDecoder標(biāo)記圖像文件格式圖像(TIFF).tifTiffBitmapEncoderTiffBitmapDecoder圖形交換格式圖像(GIF).gifGifBitmapEncoderGifBitmapDecoderWindowsMedia照片圖像.wdpWmpBitmapEncoderWmpBitmapDecoder13.3.2圖像的編碼和解碼圖像格式編碼圖像編碼是指將圖像數(shù)據(jù)轉(zhuǎn)換為特定圖像格式的過程。例13-11:演示TIFF圖像編碼以及保存圖像的基本用法。運(yùn)行效果如圖所示。3113.3.2圖像的編碼和解碼圖像格式解碼圖像格式解碼是指將某種圖像格式轉(zhuǎn)換為可以由系統(tǒng)使用的圖像數(shù)據(jù)。解碼后,即可以對(duì)其進(jìn)行顯示、處理或編碼為其他格式。例13-12:演示圖像解碼以及獲取原始圖像信息的基本用法。運(yùn)行效果如圖所示。3213.3.3像素格式轉(zhuǎn)換(FormatConvertedBitmap)FormatConvertedBitmap類為BitmapSource提供像素格式轉(zhuǎn)換的功能。例13-13:演示如何將彩色圖像轉(zhuǎn)換為灰度圖和黑白圖。運(yùn)行效果如圖所示。3313.3.4旋轉(zhuǎn)裁切和縮放圖像TransformedBitmap旋轉(zhuǎn)圖像,Image或者CroppedBitmap裁切圖像,ScaleTransform縮放圖像。旋轉(zhuǎn)圖像:位圖圖像僅支持90度增量的旋轉(zhuǎn),即只能選擇以下旋轉(zhuǎn)角度之一:0、90、180、270。如果希望讓圖像旋轉(zhuǎn)任意角度,應(yīng)該用畫筆變換來實(shí)現(xiàn)。裁切圖像:如果只想調(diào)整圖像的一部分,可以用Image或者CroppedBitmap的Clip屬性實(shí)現(xiàn);如果需要編碼和保存裁切過的圖像,應(yīng)該用CroppedBitmap來實(shí)現(xiàn)。縮放圖像:利用TransformedBitmap可縮放圖像。也可以用畫筆縮放實(shí)現(xiàn)。3413.3.4旋轉(zhuǎn)裁切和縮放圖像例13-14:演示旋轉(zhuǎn)、裁切和縮放圖像并將處理結(jié)果保存到新的圖像文件中的基本用法。運(yùn)行效果如圖所示。3513.3.5自動(dòng)播放和逐幀繪制GIF動(dòng)畫GIF和TIFF都可以包含多幀圖像,將GIF包含的多幀圖像逐幀顯示出來。其意義在于:既然可以將每一幀都單獨(dú)讀出來,當(dāng)然也能對(duì)每一幀的圖分別進(jìn)行處理。例13-15:利用GifBitmapDecoder解碼器,將所有圖像逐幀顯示出來。運(yùn)行效果如圖所示。3613.3.6其他基本的圖像處理技術(shù)將圖像作為縮略圖加載將圖像作為縮略圖加載時(shí),可利用BitmapImage的DecodePixelWidth屬性設(shè)置縮略圖的大小,這樣可以減少加載圖像所需的內(nèi)存。將一種圖像格式轉(zhuǎn)換為另一種圖像格式如果希望將一種圖像格式轉(zhuǎn)換為另一種圖像格式,只需要先從解碼器中獲取圖像信息,然后用編碼器設(shè)置相應(yīng)的幀并保存圖像信息即可。3713.3.6其他基本的圖像處理技術(shù)圖像處理的一般原則應(yīng)始終將圖像解碼為所需的大小而不是圖像的原始大小。如有可能,應(yīng)盡可能將多個(gè)圖像組合成多幀圖像再加載,而不是分別加載和顯示單個(gè)文件。3813.4利用畫筆繪制圖形圖像——TileBrush類基本組件TileBrush類包括三個(gè)主要的組件:內(nèi)容、圖塊和輸出區(qū)域。內(nèi)容如果畫筆為ImageBrush,則表示“內(nèi)容”為圖像。此時(shí)用ImageSource屬性指定ImageBrush的內(nèi)容。如果畫筆為DrawingBrush,則表示“內(nèi)容”為繪圖。此時(shí)用Drawing屬性指定DrawingBrush的內(nèi)容。如果畫筆為VisualBrush,則表示“內(nèi)容”為可視元素。此時(shí)用Visual屬性指定VisualBrush的內(nèi)容。39TileBrush類圖塊圖塊是用“內(nèi)容”構(gòu)造出來的基本塊。TileBrush提供了一個(gè)Stretch屬性,該屬性用Stretch枚舉指定如何用“內(nèi)容”來構(gòu)造圖塊。輸出區(qū)域輸出區(qū)域指如何用“圖塊”填充目標(biāo)區(qū)域。TileBrush提供了一個(gè)TileMode屬性,該屬性用TileMode指定如何填充目標(biāo)區(qū)域,包括平鋪、水平反轉(zhuǎn)、垂直翻轉(zhuǎn)等。40TileBrush類拉伸圖塊(Stretch)從TileBrush繼承的畫筆類型都可以用Stretch屬性控制如何拉伸“圖塊”。該屬性用Stretch枚舉來表示,可用的枚舉值有:None:圖塊保持其原始大小。Fill:調(diào)整圖塊的大小以填充目標(biāo)尺寸,不保留縱橫比。Uniform:在保留圖塊原有縱橫比的同時(shí)調(diào)整圖塊的大小,以適合目標(biāo)尺寸。UniformToFill:在保留圖塊原有縱橫比的同時(shí)調(diào)整圖塊的大小,以填充目標(biāo)尺寸。如果目標(biāo)矩形的縱橫比與圖塊的縱橫比不相同,則對(duì)圖塊進(jìn)行剪裁(將目標(biāo)矩形尺寸以外的部分裁剪掉)以適合目標(biāo)矩形的大小。41TileBrush類例13-16:演示用圖像畫筆拉伸圖像的基本用法。運(yùn)行效果如圖所示。42TileBrush類平鋪方式(TileMode)從TileBrush繼承的畫筆類型都可以用TileMode屬性控制如何用“圖塊”填充“輸出區(qū)域”。TileMode屬性用TileMode枚舉來定義,可用的枚舉值有:None:不平鋪。僅繪制基本圖塊。Tile:平鋪。繪制基本圖塊,并通過重復(fù)基本圖塊來填充剩余的區(qū)域,使一個(gè)圖塊的右邊緣靠近下一個(gè)圖塊的左邊緣,底邊緣和頂邊緣也是如此。FlipX:與Tile相同,只不過圖塊的交替列水平翻轉(zhuǎn)。FlipY:與Tile相同,只不過圖塊的交替行垂直翻轉(zhuǎn)。FlipXY:FlipX和FlipY的組合。43TileBrush類例13-17:演示用圖像畫筆填充圖像的基本用法。運(yùn)行效果如圖所示。44TileBrush類Viewport和ViewportUnitsTileBrush默認(rèn)生成單個(gè)圖塊并拉伸此圖塊以完全填充輸出區(qū)域,Viewport屬性決定了基本圖塊的大小和位置,ViewportUnits屬性決定了Viewport是使用絕對(duì)坐標(biāo)還是相對(duì)坐標(biāo)。Transform和RelativeTransformTileBrush類提供了兩個(gè)變換屬性:Transform和RelativeTransform。使用這些屬性可以旋轉(zhuǎn)、縮放、扭曲和平移畫筆的內(nèi)容。45TileBrush類例13-18:演示對(duì)畫筆進(jìn)行變換的基本用法。運(yùn)行效果如圖所示。4613.4.2圖像畫筆(ImageBrush)圖像畫筆(ImageBrush)是一種“內(nèi)容”為圖像的畫筆,一般用它將圖像繪制到控件的背景或者輪廓內(nèi),或者用圖像作為基本圖塊,然后平鋪到某個(gè)區(qū)域內(nèi)。例13-19:演示圖像畫筆的基本用法。運(yùn)行效果如圖所示。4713.4.3繪制畫筆(DrawingBrush)DrawingBrush使用Drawing派生類來繪圖。這種畫筆可將繪圖對(duì)象(圖形、圖像、文本、視頻)作為“內(nèi)容”繪制到某個(gè)區(qū)域。在DrawingBrush的Drawing屬性中,可使用以下類定義要繪制的內(nèi)容:GeometryDrawing:用圖形填充一個(gè)區(qū)域。ImageDrawing:用圖像填充一個(gè)區(qū)域。DrawingGroup:將各種繪圖結(jié)果組合在一起。DrawingImage:將用Drawing繪制的結(jié)果作為圖像來處理。4813.4.3繪制畫筆(DrawingBrush)繪制圖形(GeometryDrawing)GeometryDrawing類使用指定的畫筆(Brush屬性)和鋼筆(Pen屬性)來繪制Geometry,

Bru

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論