有人可以使用WPF中的ArcSegment显示在两个任意点之间绘制半圆的数学运算。
我对ArcSegment中的RadiusX,RadiusY感到困惑。它似乎不是相对于两个点而是相对于X和Y轴。这是真的应该如何?
答案 0 :(得分:36)
你是对的,Size
的{{1}}不是定义弧的起点和终点的点之间的半径。此属性描述了应在这些点之间绘制的椭圆的大小。如果您想要一个圆而不是一个椭圆,您必须记住始终将大小的x和y值设置为相同。如果你想总是画出一半的圆圈,你还需要确保ArcSegment
是这两个点之间距离的一半。
例如,请查看以下代码:
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
(这些点之间的距离为100),因此这将创建正好一半的圆。 50, 50
表示,该圆圈应顺时针绘制,这就是为什么它会画上半部分的原因。在下面的屏幕上查看SweepDirection
和Clockwise
之间的差异:
Counterclockwise
选择是否绘制更大的椭圆或更小的部分。由于我画了一半的圆圈,这没有任何意义,但是如果你要绘制不同大小的椭圆,这会显着改变输出外观,只需用它来看它是如何工作的。
当您尝试使用其大弧部分放置IsLargeArc
大小的弧200, 200
时,它就是这样的。正如你所看到的 - 弧甚至不适合窗口(这是从WPF设计师拍摄的,在正常的app溢出部分会被切断)
这是同样的事情,但设置为显示小弧:
当我将clockwise
属性更改为Size
时,绘制的圆圈只会大4倍,但仍会以您定义的精确点开始和结束。 200, 200
与点无关,在点之间绘制椭圆/ cricle,但它会改变椭圆形外观。
我希望它能告诉您Size
中Size
的含义是什么,如果您仍然感到困惑,请随时提出更详细的问题。