如何绘制(值)%Circle

时间:2018-05-05 06:19:20

标签: c# wpf algorithm

我想用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%)圆。那么你能否改进我上面使用的等式

抱歉我的英语不好,因为英语不是我的第一语言。

1 个答案:

答案 0 :(得分:2)

以下方法使用单个循环std::move创建PathGeometry,其工作范围为0到360度,但不包括360度。圆的中心是坐标ArcSegment

如果角度大于180度,将ArcSegment的(0, 0)属性设置为true非常重要。

IsLargeArc

如果需要绘制整圆,则必须添加第二个ArcSegment,或返回EllipseGeometry。