Wpf 如何在XAML中绘制一个三分之一的圆?

Wpf 如何在XAML中绘制一个三分之一的圆?,wpf,xaml,Wpf,Xaml,在我的WPF应用程序中,我想画一个分为三个相等圆弧的圆,如和平符号或饼图 换句话说,我想画这个: 我知道如何创建System.Windows.Shapes。它在代码中的路径,而不是如何在XAML中执行 为这种形状创建路径元素的正确XAML标记是什么 更新:给出的答案让我意识到我不清楚我在寻找什么:我希望为三个闭合扇区(饼图的切片)中的每一个都有一个几何体对象(一条路径或一个几何体组)。有几种方法可以做到这一点,最简单的可能是: <Image Width="200" Height="200"

在我的WPF应用程序中,我想画一个分为三个相等圆弧的圆,如和平符号或饼图

换句话说,我想画这个:

我知道如何创建
System.Windows.Shape
s。它在代码中的路径,而不是如何在XAML中执行

为这种形状创建路径元素的正确XAML标记是什么


更新:给出的答案让我意识到我不清楚我在寻找什么:我希望为三个闭合扇区(饼图的切片)中的每一个都有一个几何体对象(一条路径或一个几何体组)。

有几种方法可以做到这一点,最简单的可能是:

<Image Width="200" Height="200">
    <Image.Source>
        <DrawingImage>
            <DrawingImage.Drawing>
                <GeometryDrawing>
                    <GeometryDrawing.Pen>
                        <Pen Brush="Red"/>
                    </GeometryDrawing.Pen>
                    <GeometryDrawing.Geometry>
                        <GeometryGroup>
                        <PathGeometry>
                            <PathFigure StartPoint="100,100">
                                <PathFigure.Segments>
                                    <LineSegment Point="100,0"/>
                                </PathFigure.Segments>
                            </PathFigure>
                        </PathGeometry>
                        <PathGeometry>
                            <PathFigure StartPoint="100,100">
                                <PathFigure.Segments>
                                    <LineSegment Point="186.6,150"/>
                                </PathFigure.Segments>
                            </PathFigure>
                        </PathGeometry>
                        <PathGeometry>
                            <PathFigure StartPoint="100,100">
                                <PathFigure.Segments>
                                    <LineSegment Point="13.4,150"/>
                                </PathFigure.Segments>
                            </PathFigure>
                        </PathGeometry>
                        <EllipseGeometry Center="100,100" RadiusX="100" RadiusY="100"/>

                        </GeometryGroup>
                    </GeometryDrawing.Geometry>
                </GeometryDrawing>
            </DrawingImage.Drawing>
        </DrawingImage>
    </Image.Source>
</Image>

压缩几何体:

<GeometryDrawing Brush="Red" Geometry="M100,100 L100,0 A100,100,0,0,1,186.6,150 L100,100"/>
<GeometryDrawing Brush="Blue" Geometry="M100,100 L186.6,150 A100,100,0,0,1,13.4,150 L100,100"/>
<GeometryDrawing Brush="Green" Geometry="M100,100 L13.4,150 A100,100,0,0,1,100,0 L100,100"/>


这里的关键点是,
ArcSegment.Size
定义了结果椭圆的半径,因此应该是“100100”,因为这是实际圆的半径。

有很多不同的方法可以做到这一点,但详细程度不同。这里有一个在中间:

    <Path Width="200" Height="200" Stroke="Black" StrokeThickness="3" Stretch="Uniform">
        <Path.Data>
            <GeometryGroup>
                <EllipseGeometry Center="1,1" RadiusX="1" RadiusY="1"/>
                <LineGeometry StartPoint="1,1" EndPoint="1,0"/>
                <LineGeometry StartPoint="1,1" EndPoint="1.866,1.5"/>
                <LineGeometry StartPoint="1,1" EndPoint="0.134,1.5"/>
            </GeometryGroup>
        </Path.Data>
    </Path>


也许我不够清楚:我希望每个闭合的扇区(饼图的一部分)都是它自己的几何体。所以我在寻找ArcSegments方法。是的,我知道这很痛苦。如果容易的话,我不会问的!要了解这些该死的弧段是如何工作的,请检查编辑。
<GeometryDrawing Brush="Red" Geometry="M100,100 L100,0 A100,100,0,0,1,186.6,150 L100,100"/>
<GeometryDrawing Brush="Blue" Geometry="M100,100 L186.6,150 A100,100,0,0,1,13.4,150 L100,100"/>
<GeometryDrawing Brush="Green" Geometry="M100,100 L13.4,150 A100,100,0,0,1,100,0 L100,100"/>
    <Path Width="200" Height="200" Stroke="Black" StrokeThickness="3" Stretch="Uniform">
        <Path.Data>
            <GeometryGroup>
                <EllipseGeometry Center="1,1" RadiusX="1" RadiusY="1"/>
                <LineGeometry StartPoint="1,1" EndPoint="1,0"/>
                <LineGeometry StartPoint="1,1" EndPoint="1.866,1.5"/>
                <LineGeometry StartPoint="1,1" EndPoint="0.134,1.5"/>
            </GeometryGroup>
        </Path.Data>
    </Path>