gpt4 book ai didi

使用两个任意点之间的 ArcSegment 计算半圆的 WPF 数学

转载 作者:行者123 更新时间:2023-12-02 02:13:03 42 4
gpt4 key购买 nike

有人可以展示在 WPF 中使用 ArcSegment 在两个任意点之间绘制半圆的数学计算吗?

我对ArcSegment中的RadiusX、RadiusY很困惑。它似乎不是相对于两点而是相对于X和Y轴。事情真的应该如此吗?

最佳答案

你是对的,ArcSegmentSize 不是定义圆弧起点和终点的点之间的半径。此属性描述了在这些点之间绘制的椭圆应该有多大。如果您想要圆形而不是椭圆形,则必须记住始终将 size 的 x 和 y 值设置为相同。如果您希望始终绘制圆的一半,则还需要确保 Size 为这两点之间距离的一半。

例如看下面的代码:

<Canvas>
<Path Stroke="Black">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="100,100">
<ArcSegment IsLargeArc="True"
Size="50, 50"
Point="200, 100"
SweepDirection="Clockwise" />
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>

这将绘制圆的上半部分,从点 100, 100 开始,到点 200, 100 结束。由于我已将 Size 属性设置为 50, 50(这些点之间的距离为 100),这将创建正好一半的圆。 SweepDirection指出,该圆应该顺时针绘制,这就是它绘制上半部分的原因。在下面的屏幕上查看顺时针逆时针之间的区别:

50, 50, clockwise 50, 50, counterclokwise

IsLargeArc 选择是绘制椭圆的较大部分还是较小部分。因为我画的是半个圆,所以这没有任何意义,但是如果您绘制不同大小的椭圆,这将显着改变输出外观,只需使用它看看它是如何工作的。

这就是当您尝试使用其大弧部分顺时针放置200, 200大小的弧时的样子。正如你所看到的 - 弧线甚至不适合窗口(这是由 WPF 设计器拍摄的,在正常应用程序中溢出的部分将被切断)

200, 200, clockwise, largearc这是同样的事情,但设置为显示小弧: 200, 200, clockwise, not largearc

当我将 Size 属性更改为 200, 200 时,绘制的圆只是变大了 4 倍,但仍然在您定义的精确点处开始和结束。 Size 与您在点之间绘制椭圆/曲线的点无关,但它会改变椭圆的外观。

我希望它能向您展示 ArcSegmentSize 的含义,如果您仍然感到困惑,请随时提出更详细的问题。

关于使用两个任意点之间的 ArcSegment 计算半圆的 WPF 数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5336131/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com