WPF 2D圖形 Shape入門(一)--Shape

RyzenAdorer發表於2021-05-28

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

相關文章