带孔的椭圆

时间:2011-05-19 06:45:04

标签: wpf xaml wpf-controls

如何创建一个带孔的椭圆(路径......):

Ellipse with hole

任务是创建三态指示器的可视化。通过将控件向左或向右旋转几度,可以看到不同的状态。

3 个答案:

答案 0 :(得分:3)

=>

    <Path Stroke="Red" StrokeThickness="20">
        <Path.Data>
            <PathGeometry>
                <PathFigure StartPoint="80,0">
                    <ArcSegment x:Name="ArcSeg1" Size="100,100" RotationAngle="0" IsLargeArc="True" 
                SweepDirection="Clockwise" Point="20,0"  >
                    </ArcSegment>
                </PathFigure>
            </PathGeometry>
        </Path.Data>
    </Path>

这里有一些相关的属性,要理解它背后的数学 http://www.charlespetzold.com/blog/2008/01/Mathematics-of-ArcSegment.html 但基本上你给出了两个椭圆的交集坐标:intersection

StartPoint和Point表示相交点,而Size是整个椭圆的大小。其余的是非常自我解释的。 如果你想旋转它,最简单和最好的方法是使用RotateTransform。

答案 1 :(得分:0)

将“洞”打成整圆的白色三角形有帮助吗?这可以与“指针”(线)一起围绕圆心旋转。

I can only apologise for my crude rendering

答案 2 :(得分:0)

您可以将CombinedGeometryGeometryCombineMode="Exclude"

一起使用

documentation有一个很好的例子。 example of combined geometry