本文是篇WPF Shape的入門文章
Shape
首先看看shape的繼承鏈關係:
一個Shape具有哪些重要屬性:
屬性 | 說明 |
---|---|
DefiningGeometry | 預設的幾何形狀 |
RenderedGeometry | 最終渲染後呈現的幾何形狀 |
Stroke | 繪製的形狀輪廓加上畫刷(顏色) |
StrokeThickness | 繪製邊框畫刷的粗細 |
Fill | 給繪製的形狀內部填充畫刷 |
Rectangle
我們先來剖析一個簡單的預設的Shape物件Rectangle
,實際上一個Rectangle
能夠正式渲染顯示到介面當中,必須含有三個要素:
- Geometry(幾何):決定著繪製的形狀
- Stroke(邊框畫刷)或者Fill(填充畫刷):給繪製的形狀輪廓加上畫刷(顏色)/給繪製的形狀內部填充畫刷(顏色)
- Height/Width:決定著幾何圖形的大小
因此程式碼如下:
MainWindow.xaml:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Rectangle x:Name="Rectangle" Height="150" Width="150" Stroke="Black" />
</Grid>
MainWindow.xaml.cs:
Debug.WriteLine(Rectangle.RenderedGeometry.ToString());
輸出:
System.Windows.Media.RectangleGeometry
因此實際上決定一個真正的Rectangle
形狀的是RectangleGeometry
,關於Geometry相關的知識可能會在以後Shape系列文章講到
Path
還有一種方式同樣的能夠獲得矩形形狀,那就是通過Path
:
MainWindow.xaml:
<Path x:Name="Path" Grid.Column="1" Stroke="Black" />
MainWindow.xaml.cs:
Path.Data = new RectangleGeometry(new Rect(100, 128, 150, 150));
Debug.WriteLine(Path.RenderedGeometry.ToString());
輸出:
System.Windows.Media.RectangleGeometry
介面效果:
因此,Rectangle
實際上底層是預設了RectangleGeometry
,而通過Path
我們可以自定義所需的Geometry
原始碼
https://github.com/ZhengDaoWang/BlogCodeSample/tree/main/ShapeSample