C# 如何绘制(值)%圆

C# 如何绘制(值)%圆,c#,wpf,algorithm,C#,Wpf,Algorithm,我想使用路径绘制一个部分圆,如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) +

我想使用
路径
绘制一个部分圆,如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
因此,弧段.Point=“100,50”,我们得到一个50%的圆

但我认为这个方程是无效的,可能(我还没有验证)不准确,我们需要4个方程来完成a部分圆(1->99%)的圆。你能改进我上面用的方程吗


对不起,我的英语不好,因为英语不是我的第一语言

以下方法使用单个圆形
弧段创建一个
路径几何体
,该弧段的工作范围为0到360度,但不包括360度。圆心是一个坐标
(0,0)

如果角度大于180度,则必须将ArcSegment的
IsLargeArc
属性设置为true

private Geometry CreateArc(double radius, double angle)
{
    var endPoint = new Point(
        radius * Math.Sin(angle * Math.PI / 180),
        radius * -Math.Cos(angle * Math.PI / 180));

    var segment = new ArcSegment(
        endPoint, new Size(radius, radius), 0,
        angle >= 180, SweepDirection.Clockwise, true);

    var figure = new PathFigure { StartPoint = new Point(0, -radius) };
    figure.Segments.Add(segment);

    var geometry = new PathGeometry();
    geometry.Figures.Add(figure);

    return geometry;
}

如果需要绘制一个完整的圆,则必须添加第二个圆弧段,或返回椭圆等高线。

不行吗?第三个参数是旋转角度。我想问一个问题,如何将方法的返回类型传递给in-xamlAssign或bind路径的数据属性。如何更改圆心位置?我希望路径中的(%)圆将路径的拉伸设置为“无”,然后将其定位,例如通过设置其边距或在网格单元中自动居中。这就是WPF的基本布局。你会在互联网上找到很多信息。我已经对你的代码做了一些调整,使其居中,无论如何感谢你的建议
var endPoint=new Point(radius*Math.Sin(angle*Math.PI/180)+radius,radius*-Math.Cos(angle*Math.PI/180))+radius并将起点更改为
新点(半径,0)