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

.NET中借助netDxf获取DXF多段线顶点并绘制至Bitmap

解决netDxf中Polyline2D顶点转PointF并绘制的问题

核心处理逻辑

netDxf的Polyline2D.Vertexes集合内的PolylineVertex2D对象,其Position属性为Vector2类型,只需将该向量的X、Y值映射到PointF的对应字段即可。同时要注意DXF坐标系与GDI+ Bitmap坐标系的Y轴方向差异(DXF Y轴向上,GDI+ Y轴向下),需翻转Y坐标保证图形显示正确。

代码实现示例

假设你已持有Graphics对象g和待处理的Polyline2D对象polyline:

// 获取Bitmap高度用于Y轴翻转
float bitmapHeight = (float)g.VisibleClipBounds.Height;
List<PointF> polyPoints = new List<PointF>();

// 遍历多段线顶点,转换为PointF
foreach (var vertex in polyline.Vertexes)
{
    // 转换坐标并翻转Y轴
    float x = (float)vertex.Position.X;
    float y = bitmapHeight - (float)vertex.Position.Y;
    polyPoints.Add(new PointF(x, y));
}

// 闭合多段线需手动追加第一个顶点,保证绘制闭合
if (polyline.IsClosed)
{
    polyPoints.Add(polyPoints[0]);
}

// 绘制多段线
g.DrawLines(Pens.Black, polyPoints.ToArray());

关键细节说明

  • PolylineVertex2D.Position:存储顶点的原始DXF坐标,直接提取X、Y值转为float即可。
  • Y轴翻转:修正坐标系差异,避免图形倒置。
  • 闭合处理:DrawLines不会自动闭合多段线,需手动将第一个顶点添加到数组末尾,实现闭合效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:22:03