我该如何使用椭圆类绘制圆形扇形?

19

我想在WP7上制作一个圆的扇形。我尝试使用椭圆类来完成这个任务,但是我找到了很多关于如何制作仪表盘、饼图或其他东西的解决方案,而我只需要最基本的内容。 是否有人能够帮忙?

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

输入图像描述

谢谢, Laci


2
请提供更多信息,您的问题不清楚。 - Mo Valipour
我想显示圆形(或椭圆)的一部分。就像图片中的黄色区域一样。 - laszlokiss88
2个回答

43

这是一个相当简单的解决方案,尽管它没有使用 Ellipse,但需要一些三角学:

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

Data属性使用Path Markup Syntax

  • 开头的"M"表示笔要移动到位置0,0。
  • "L"表示要从当前位置(0, 0)画一条直线到0,-100。
  • "A"表示要从当前位置绘制一个椭圆弧,其终点为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)确定。


很棒的答案,但从技术上讲,你正在使用100 * sin(45 *(Pi / 180))和100 * cos(45 *(Pi / 180))作为你正在使用弧度来获取x和y坐标,而不是角度。 - djangojazz
此外,y轴坐标应该乘以-1,因为y轴是反向的,所以:x = 100 * sin(45 * (Pi / 180))y = -100 * cos(45 * (Pi / 180)) - Andrey Tretyak

1
你需要像这样做:
  • 为椭圆定义一个画布包装器
  • 定义画布的可见部分 (剪辑)。对于此部分,您需要使用PathGeometry作为Clip,以定义您想要看到的圆形的部分。 (见链接)

    <Canvas>
        <Canvas.Clip>
            <PathGeometry>
                    // 在此处定义您的路径 (请参见上面的链接)
            </PathGeometry> 
    
            <Ellipse Background="Yellow" Width="200" Height="200" />
        </Canvas.Clip>
    </Canvas>
    

或者您可以使用CombinedGeometryPathGeometryEllipseGeometry组合成一个切片。(该链接提供了一个很好的CombinedGeometry示例)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接