本文是篇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
