我想用Path
绘制一个像25%圆圈的部分圆圈(1 / 4,90度圆圈,360度是一个完整的圆圈)
我可以使用ArcSegment
来做到这一点,但25%很容易,因为数字很简单,您可以轻松猜出这一点。但是当我想绘制一个20%的圆形1/5 72度圆圈时,我不能再猜测是因为它不是浮点值所以我想出了4个方程式
For 0->90 degree (unit value = Degree (Eg: 20degree)) x,y = ArcSegment.Point(x,y)
x = (PathWidth / 2) + [Sin(value) *50]
y = [Sin(value) *50]
For 90->180 degree
x, y= (PathWidth / 2) + [Sin(value) *50]
For 180->270 : Sorry I don't know ;(
例如,我希望100x100路径中的25%圆(起点为50,0),然后25%为1/4 = 90度: 应用我上面提到的等式,我们有:
x = (100/2) + Sin(90) * 50 = 100
y = Sin(90) * 50 = 50
所以ArcSegment.Point =“100,50”,我们50%圈
但我认为方程式无效且可能(我尚未验证)不准确,我们需要4个方程来完成部分圆(1-> 99%)圆。那么你能否改进我上面使用的等式
抱歉我的英语不好,因为英语不是我的第一语言。
答案 0 :(得分:2)
以下方法使用单个循环std::move
创建PathGeometry
,其工作范围为0到360度,但不包括360度。圆的中心是坐标ArcSegment
。
如果角度大于180度,将ArcSegment的(0, 0)
属性设置为true非常重要。
IsLargeArc
如果需要绘制整圆,则必须添加第二个ArcSegment,或返回EllipseGeometry。