c# - WPF 中的填充弧

标签 c# wpf geometry

我想画一个像这样的图:Concentric arcs

我需要为每个弧线段设置一个独特的元素,以便我可以处理事件并根据需要重新着色。我不太确定如何在 WPF 中创建正确的几何图形。我可以根据圆的半径和与圆心的夹角轻松计算每个弧段的四个点。外圆的半径为 100,内圆的半径为 50,红色的四个点是(从左上角顺时针方向,原点在圆的顶部):

0,0
70,30
35,65
0,50

使用这些点,我创建了一个简单的路径来绘制线段:

<Path Stroke="Black" Fill="Black" StrokeThickness="1" >
  <Path.Data>
    <PathGeometry>
      <PathGeometry.Figures>
        <PathFigure StartPoint="0,0">
          <PathFigure.Segments>
            <ArcSegment Point="70,30" />
            <LineSegment Point="35,65" />
            <ArcSegment Point="0,50" />
          </PathFigure.Segments>
        </PathFigure>
      </PathGeometry.Figures>
    </PathGeometry>
  </Path.Data>
</Path>

但这只是用直线绘制了一个梯形。我知道我可以改变 ArcSegments 上的大小,但我似乎无法弄清楚它是如何影响曲率的。我希望圆弧跟随主圆,但我不确定如何表达。如何使圆弧具有正确的曲率?

另外,如何在后面的 c# 代码中表达和添加路径,而不是在 xaml 中?

最佳答案

我画的正是这种形状(两个同轴弧和两个连接它们的径向线),如下所示:

new LineSegment(new Point(x2, y2), true),
new ArcSegment(new Point(x3,y3),new Size(100*outerRadius,100*outerRadius), 0,largeAngle, SweepDirection.Clockwise, true),
new LineSegment(new Point(x4, y4), true),
new ArcSegment(new Point(x1, y1),new Size(100*innerRadius,100*innerRadius), 0,largeAngle, SweepDirection.Counterclockwise, true),

显然这是代码而不是 XAML,但它可能会让您快速入门。

关于c# - WPF 中的填充弧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6101823/

相关文章:

css - 将 css 中生成的圆圈并排放置,而不使用 markdown 文件中的表格

math - 二维空间三角形碰撞检测

c# - 带有 Spring 表达式的 ExpandoObject

c# - 从代码构建 visual studio 解决方案

wpf - 使用comboBox作为源将自动生成的DataGrid分组

postgresql - 多边形联合(地理类型为 ST_UNION)

C# - @if 内有未封闭的 HTML 元素时出现 System.Web.HttpParseException 错误

c# - 在 C# 中对字符串进行排序

c++ - .NET 查看其他应用程序的内存

.net - 如何在 WCF 中为多个服务配置一个端点?