【问题标题】:How can I draw a circle sector with the ellipse class?如何使用椭圆类绘制圆形扇区?
【发布时间】:2011-10-08 07:56:33
【问题描述】:

我想在 WP7 上画一个圆圈。我尝试用 ellipse 类来做到这一点,我找到了很多解决方案,可以制作仪表或饼图或其他东西,但我只需要本质。 有人可以帮忙吗?

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

谢谢, 拉齐

【问题讨论】:

  • 请提供更多信息,您的问题不清楚。
  • 我想只显示一个圆(或椭圆)的一部分。就像picture中的黄色区域一样。

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


【解决方案1】:

这是一个相当简单的问题解决方案,虽然它不使用 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移动到位置 0,0。
  • “L”告诉笔从当前位置 (0, 0) 到 0,-100 绘制 Line。
  • “A”告诉笔从当前位置到 70.7,-70.7 绘制一个椭圆 Arc(“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 坐标,而不是度数。
  • 另外,y坐标应该乘以-1,因为y轴是相反的,所以:x = 100 * sin(45 * (Pi / 180))y = -100 * cos(45 * (Pi / 180))
【解决方案2】:

你需要做这样的事情:

  • 为椭圆定义一个画布包装器
  • 定义画布的可见部分(剪辑)。对于这一部分,您需要使用 PathGeometry 作为 Clip 来定义您想要可见的圆的切片。 (见链接)

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

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

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 2016-07-09
    • 1970-01-01
    • 2014-11-20
    • 2022-01-09
    • 2014-02-07
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多