這邊要來講解如何使用DrawingBrush來畫出棋盤格/地板
今天預計的成果要達到這樣↓↓↓
學會了之後就可以做點小小修改,再搭配3D的渲染,就可以畫出地板的模樣,看起來是不是還不錯呢?
如果你也想要做出上面那張圖的效果,可能就讓您小失望啦~!這篇並不會說到如何使用3D來作畫...
接下來開始進入正文囉~!!
Drawing Brush
在WPF裡面我們可以使用Drawing 物件來畫出2-D的圖片、圖示、文字、甚至是影像,這裡的Drawing可以把他想成 [畫圖] 的動作;在此之前,我們需要使用畫筆(Drawing Brush),也就是DrawingBrush物件來畫出我們想要的東西,如平面、棋盤格、貼圖等等...,還有更多更多...例如 : DrawingGroup、GeometryDrawing、GlyPhRunDrawing、ImageDrawing和VideoDrawing等等都繼承Drawing的類別,也就代表說我們可以使用DrawingBrush來建立出各種不同的效果!!
建立畫筆
在XAML裡面我們使用DrawingBrush來建立畫筆,下面簡單描述出建立畫筆的方法,畫筆屬性必須要有一個Drawing屬性,也可以是任何繼承於Drawing的屬性
<DrawingBrush > <DrawingBrush.Drawing /> </DrawingBrush>
接著我們就來實際弄弄看!!
使用畫刷來替任意的圖形做上色,只要將這個圖形的Fill Property設定相對應的畫刷就可以了
以下示範如何將一個矩形透過畫筆來上色
<Grid>
<Rectangle Width="200" Height="200" Stroke="Black" StrokeThickness="3" >
<Rectangle.Fill>
<DrawingBrush >
<DrawingBrush.Drawing>
<GeometryDrawing Brush="Yellow">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="50,25,25,25"/>
<RectangleGeometry Rect="25,50,25,25"/>
</GeometryGroup>
</GeometryDrawing.Geometry>
<GeometryDrawing.Pen>
<Pen Thickness="5">
<Pen.Brush>
<LinearGradientBrush>
<GradientStop Offset="0.0" Color="Blue"/>
<GradientStop Offset="2.0" Color="Black"/>
</LinearGradientBrush>
</Pen.Brush>
</Pen>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
畫出來的結果會像下面這樣
上面用RectangleGeometry畫出矩形;那我們要怎麼讓他重複呢?只要在第4行加入ViewPort、並且設定TitleMode就可以啦,把第4行它改成這樣
<DrawingBrush Viewport="0,0,0.5,0.5" TileMode ="Tile">
最後來示範如何同時間畫出兩種不同的顏色吧!!,原理跟上面的程式碼很像,只是有一個trickly的地方在於我們同時畫出兩種不同大小的矩形,其中一個比較大,包覆著兩個比較小的矩形,就可以達成棋盤格、地板的效果囉!!!!
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="34*"/>
<ColumnDefinition Width="225*"/>
</Grid.ColumnDefinitions>
<Rectangle Grid.ColumnSpan="2" Margin="0,0,0.4,-0.2">
<Rectangle.Fill>
<DrawingBrush Viewport="0,0,0.5,0.5" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="#FFA6A3D1">
<GeometryDrawing.Geometry> <!--畫出一個大矩形 (淺藍色)-->
<RectangleGeometry Rect="0,0,1,1"></RectangleGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#FF5761B2">
<GeometryDrawing.Geometry>
<GeometryGroup> <!--畫出兩個小矩形 (深藍色)-->
<RectangleGeometry Rect="0,0,0.50,0.50" />
<RectangleGeometry Rect="0.50,0.50,0.50,0.50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
於是就完成今天的任務啦~!
