动态生成B样条曲线的实现步骤如下:
(1)设定一个点集合List<Point> mousepts保存鼠标左键所按下的序列点;
(2)在鼠标移动过程中把鼠标的当前位置作为B样条曲线的临时终点,加入点集合mousepts;
(3)由点集合mousepts中的这些序列点反求B样条曲线的控制顶点[5];
(4)利用求出的B样条曲线的控制顶点得到B样条曲线上的序列离散点;
(5)将序列离散点依次加入多段线Polyline的Points集合,从而生成B样条曲线。
3 图形数据文件的存储与读取
系统图形数据文件的输出包含JPG和DXF两种格式。由于AutoCAD在全世界应用非常广泛,它的数据文件格式DXF已经成为事实上的一种标准,因此系统提供了自定义的图形数据文件格式与DXF格式相互转换的功能。DXF 文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后的值的类型。使用这些组码和值对,可以将 DXF 文件组织到由记录组成的区域中,这些记录由组码和数据项目组成。在 DXF 文件中,每个组码和值都各占一行。DXF文件完整的结构[6]如图6所示。
程序中设计了两个基类ReadDXF和WriteDXF来分别读取和写入DXF文件。ReadDXF读取 DXF 文件,并且从给定段的给定对象中提取特定代码和值。与读取 DXF 文件相比,写入DXF文件更困难一些,因为必须保持图形的一致性,这样 AutoCAD 才能找到可接受的文件。AutoCAD 允许省略 DXF 文件中的很多项目,仍然能够获得可用的图形,但文件结尾处必须存在 EOF 项目。为了简便,WriteDXF省略了整个HEADER段、TABLES 段和BLOCKS 段,只包含 ENTITIES 段。
随着计算机系统、图形输入、图形输出设备的发展,计算机图形软件系统也有了很大的发展[7]。本文详细介绍了基于WPF的交互式绘图系统的功能与设计,并探讨了系统实现过程中的若干关键技术。该系统实现了其他图形软件具有的基本操作,并提供了自定义的图形数据文件格式与DXF格式相互转换的功能,操作方便,灵活,具有可扩展性,经过改进还可以成为适用于其它行业的通用的图形工具软件。
参考文献
[1] MACDONALD M. Pro WPF in C# 2008:Windows Presentation Foundation with .NET 3.5[M]. New York: Apress,2008.
[2] NATHAN A. WPF揭秘[M]. 瞿杰,译. 北京:人民邮电出版社,2008:109-111.
[3] PETZOLD C. Windows Presentation Foundation程序设计指南[M].蔡学镛,译. 北京:电子工业出版社, 2008:844-845.
[4] 朱永强,鲁聪达. 自由曲线曲面造型技术的综述[J].中国制造业信息化,2003,32(5):110-113.
[5] 孙家广,杨长贵.计算机图形学[M]. 北京:清华大学出版社, 1995.
[6] 谭超,张群会.基于AutoCAD 的DXF格式文件读写方法研究[J].计算机与网络,2009,35(21):46-49.
[7] 曾庆云. 计算机绘图技术的发展趋势[J]. 机械研究与应用,1996(4):37-38.