如何用椭圆类绘制圆扇区?

时间:2011-07-19 08:32:48

标签: wpf windows-phone-7 canvas ellipse sector

我想在WP7上创建一个圆圈。我尝试用椭圆类来做这个,我发现了很多解决方案,它可以制作量表或饼图或其他东西,但我只需要精华。 有人可以帮忙吗?

目的是仅显示圆(或椭圆)的一部分。就像图片中的黄色区域一样:

enter image description here

谢谢, LACI

2 个答案:

答案 0 :(得分:38)

这是一个相当简单的问题解决方案,虽然它不使用Ellipse而且需要一点三角函数:

<Path Fill="Black"
      Data="M0,0 L0,-100 A100,100 0 0 1 70.7,-70.7 z" />

Data属性使用Path Markup Syntax

  • 开头的“M”告诉笔 M ove到位置0,0。
  • “L”告诉笔从当前位置(0,0)绘制 L ine到0,-100。
  • “A”告诉笔从当前位置绘制椭圆 A rc到70.7,-70.7(“100,100”部分确定椭圆的水平和垂直半径,并且“ 0 0 1“部分用于RotationAngleIsLargeArcSweepDirection(顺时针为1,逆时针为0)。
  • “z”告诉笔关闭或完成形状(这将导致从70.7,-70.7回到0,0)。

70.7来自哪里?好吧,这个特殊的弧扫描出一个半径为100的圆的45度角,所以坐标70.7,-70.7由100 * sin(45)100 * cos(45)确定。

答案 1 :(得分:1)

你需要做这样的事情:

  • 为椭圆定义画布包装
  • 定义画布(剪辑)的可见部分。对于此部分,您需要使用PathGeometry作为剪辑来定义要显示的圆的切片。 (见链接)

    <Canvas>
        <Canvas.Clip>
            <PathGeometry>
                    // define your path here (see link above)
            </PathGeometry> 
    
            <Ellipse Background="Yellow" Width="200" Height="200" />
        </Canvas.Clip>
    </Canvas>
    

或者,您可以使用CombinedGeometry组合PathGeometry和EllipseGeometry来形成切片。 (该链接提供了CombinedGeometry的一个很好的例子)