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

如何在C# WPF中带参数绘制圆弧?DrawEllipse绘制错误怎么解决

WPF C# 使用DrawingContext绘制圆弧的实现方案

首先明确:DrawingContext 类没有原生的DrawArc方法,你当前使用的 DrawEllipse 方法用于绘制完整的椭圆形/圆形,无法满足圆弧绘制需求,需要结合 PathGeometry 和 ArcSegment 实现圆弧绘制。

实现核心逻辑

  • 定义圆弧的中心点、半径、起始角度、结束角度
  • 创建PathFigure对象设置圆弧起点
  • 添加ArcSegment对象配置圆弧的参数(半径、结束点、是否大弧、旋转方向等)
  • 将PathFigure添加到PathGeometry,最后调用DrawingContext.DrawGeometry绘制

完整示例代码

DrawingVisual d = new DrawingVisual();
// 可以自行调整画笔粗细
System.Windows.Media.Pen pen = new System.Windows.Media.Pen(Brushes.Black, 1); 
DrawingContext drawingContext = d.RenderOpen();

// 基础参数配置
// 你原来的0.4/0.5像素太小几乎不可见,可以根据画布尺寸调整为合适的数值
Point center = new Point(100, 100); 
double radiusX = 50; // X轴半径
double radiusY = 50; // Y轴半径,和X一致就是正圆的圆弧
double startAngle = 0; // 起始角度 单位:度
double endAngle = 90; // 结束角度 单位:度,这里示例画90度的圆弧

// 计算圆弧起始点和结束点坐标
Point startPoint = new Point(
    center.X + radiusX * Math.Cos(startAngle * Math.PI / 180),
    center.Y + radiusY * Math.Sin(startAngle * Math.PI / 180)
);
Point endPoint = new Point(
    center.X + radiusX * Math.Cos(endAngle * Math.PI / 180),
    center.Y + radiusY * Math.Sin(endAngle * Math.PI / 180)
);

// 构造几何图形
PathGeometry pathGeometry = new PathGeometry();
PathFigure pathFigure = new PathFigure();
pathFigure.StartPoint = startPoint;

// 配置圆弧参数
ArcSegment arcSegment = new ArcSegment()
{
    Point = endPoint,
    Size = new Size(radiusX, radiusY),
    RotationAngle = 0,
    IsLargeArc = endAngle - startAngle > 180, // 角度差超过180度时启用大弧
    SweepDirection = SweepDirection.Clockwise // 绘制方向:顺时针
};
pathFigure.Segments.Add(arcSegment);
pathGeometry.Figures.Add(pathFigure);

// 绘制圆弧
drawingContext.DrawGeometry(null, pen, pathGeometry);

// 原来的测试小圆可以保留
drawingContext.DrawEllipse(Brushes.White, pen, center, 4,4);

drawingContext.Close();
canvas.Children.Add(new VisualHost { Visual = d });

补充说明

如果需要绘制闭合的扇形,可以在PathFigure中额外添加两条线段,连接圆弧的起始点、结束点到圆心即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:10