![786b1ba530feeb09e5546f63345c11e4.png](https://img-blog.csdnimg.cn/img_convert/786b1ba530feeb09e5546f63345c11e4.png)
工控领域的制图软件仍然以AutoCAD为主,很多时候我们希望上位机软件可以读取CAD的图纸文件,从而控制设备按照绘制的路线进行运行,今天给大家分享的是如何使用C#读取DXF文件并进行显示。
1、准备工作
如果想通过C#读取DXF文件,首先需要使用AutoCAD生成一些DXF文件,接着使用VS2019创建一个Windows窗体应用。
2、安装netDXF包
- 打开VS的工具 >> NuGet包管理器 >> 管理解决方案的NuGet程序包;
![38ee60780effd506ca7fd35b8e6668f1.png](https://img-blog.csdnimg.cn/img_convert/38ee60780effd506ca7fd35b8e6668f1.png)
- 在浏览选项卡中,搜索框中输入“netDXF”,得到结果如下图所示:
![1c65770a3d8bb8f1c0ddc62e310f179f.png](https://img-blog.csdnimg.cn/img_convert/1c65770a3d8bb8f1c0ddc62e310f179f.png)
- 选择安装的项目,并单击安装,注意netDXF安装包的.net framework版本。
![2ac8916d01f0d972ddcdbc774aa4e4d8.png](https://img-blog.csdnimg.cn/img_convert/2ac8916d01f0d972ddcdbc774aa4e4d8.png)
3、读取DXF文件
- 新建一个DxfDocument对象,在打开文件的按钮事件中,调用Load方法读取选择路径下的dxf文件:
![8445a81a19f3349ebcae8a0c7e7b2518.png](https://img-blog.csdnimg.cn/img_convert/8445a81a19f3349ebcae8a0c7e7b2518.png)
- 加载完成后将文件中的Line、Arc、Circle信息显示在DataGridView中:
![d5d4fb5ec62c48f05f2db44de63c04c6.png](https://img-blog.csdnimg.cn/img_convert/d5d4fb5ec62c48f05f2db44de63c04c6.png)
- 显示结果:
![f7df305fb87bdf2eb396be6599a44314.png](https://img-blog.csdnimg.cn/img_convert/f7df305fb87bdf2eb396be6599a44314.png)
4、显示图形
- 界面上添加一个PictureBox控件,先绘制一下表格:
![f2ebb5ae65c6972149a8bba023d7f2ed.png](https://img-blog.csdnimg.cn/img_convert/f2ebb5ae65c6972149a8bba023d7f2ed.png)
- 绘制结果如下图所示:
![40e635c9aceec49f669981d7cc74dd30.png](https://img-blog.csdnimg.cn/img_convert/40e635c9aceec49f669981d7cc74dd30.png)
- 基于GDI+绘制Line:
![ebe206689ccf86a6d163b17328c33b1d.png](https://img-blog.csdnimg.cn/img_convert/ebe206689ccf86a6d163b17328c33b1d.png)
- 基于GDI+绘制Arc:
![4237c4ddc30dc2e79a3c5098d3610471.png](https://img-blog.csdnimg.cn/img_convert/4237c4ddc30dc2e79a3c5098d3610471.png)
- 基于GDI+绘制Circle:
![03e75cbe1bd581d8ed7f1cef2711e0f0.png](https://img-blog.csdnimg.cn/img_convert/03e75cbe1bd581d8ed7f1cef2711e0f0.png)
- 显示结果:
![cf99ca47c98a20799ce076fd2079bce0.png](https://img-blog.csdnimg.cn/img_convert/cf99ca47c98a20799ce076fd2079bce0.png)
5、平移、放大、缩小
完成图形显示后,增加鼠标平移、放大及缩小功能,添加以下四个鼠标事件:
![4543859930a4f0f4cbb83300eb519d93.png](https://img-blog.csdnimg.cn/img_convert/4543859930a4f0f4cbb83300eb519d93.png)
(1)鼠标MouseDown事件:
![c40fbb3ff3d98f0dae78e3b3e125edc3.png](https://img-blog.csdnimg.cn/img_convert/c40fbb3ff3d98f0dae78e3b3e125edc3.png)
(2)鼠标MouseUp事件:
![7390abdc1dc526be02e32b14bf93cbe8.png](https://img-blog.csdnimg.cn/img_convert/7390abdc1dc526be02e32b14bf93cbe8.png)
(3)鼠标MouseMove事件:
![27603bb8ca409062a983c8d7b7f83c47.png](https://img-blog.csdnimg.cn/img_convert/27603bb8ca409062a983c8d7b7f83c47.png)
(4)鼠标MouseWheel事件:
![c3a6c344c99c72bcd201d90732079599.png](https://img-blog.csdnimg.cn/img_convert/c3a6c344c99c72bcd201d90732079599.png)