You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ImageSharp中使用EllipsePolygon绘制圆形及圆弧问题

ImageSharp PathBuilder 绘制圆形、圆弧方案

正圆绘制方案

你当前使用AddEllipticalArc传入等长半径、360度扫描角的写法可以生成正圆,但不是最优实现:

  • EllipsePolygon本身就实现了IPath接口,不需要绕路调用弧段方法,直接调用AddPath传入实例即可,参数语义更清晰,也不会出现浮点精度导致的360度弧首尾衔接缺口问题:
// 圆心(300,200) 半径10的正圆
pb.AddPath(new EllipsePolygon(new Point(300, 200), 10));
  • AddEllipticalArc的适用场景是绘制非闭合的椭圆/正圆弧段,用来画整圆属于能用但不够合理的写法,可读性差,也容易因为角度、旋转参数传错导致图形变形,部分低版本还会因为浮点计算误差出现首尾不闭合的细缺口。

给定圆心+起终点绘制圆弧方案

不需要手动计算起始角、扫描角,PathBuilder已经提供了对应点坐标的重载方法,直接传参即可:

  • 调用AddArc重载,依次传入圆心坐标、圆弧起点坐标、圆弧终点坐标,再指定两个枚举参数即可:
    • SweepDirection:指定弧段绘制方向,可选顺时针/逆时针
    • ArcSize:指定当两点对应两段弧时,取大弧段还是小弧段
      示例代码:
Point center = new Point(300, 200);
Point arcStart = new Point(310, 200);
Point arcEnd = new Point(300, 210);
// 顺时针绘制两点间的小弧
pb.AddArc(center, arcStart, arcEnd, SweepDirection.Clockwise, ArcSize.Small);

这个方法内部已经封装了角度换算、半径校验的逻辑,不需要自己做数学计算。


内容的提问来源于stack exchange,提问作者Walle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:39:15