Welcome

首页 / 软件开发 / C# / C#发现之旅第七讲 C#图形开发高级篇

C#发现之旅第七讲 C#图形开发高级篇2011-04-27 cnblogs 袁永福为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为“C#发现之旅 ”的技术讲座。考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用。目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程。在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力。

,其中的 PenMarkLib.zip 就是本课程的演示代码。

课程说明

经过以前几次课程,相信 大家对图形编程有所了解了,并能自己动手开发一些简单的图形软件。今天我们就在以前图 形开发课程的基础上演示使用C#开发一个能保存签名轨迹的图形软件。

这个软件的用 户界面如图

功能需求

本软件的功能需求如下

用户能操作来开始一次签名和结束 签名。

正在签名时,用户按下鼠标按键开始绘制一条线条,松开鼠标按键结束绘制一 个线条。

一个签名可以包含多个不相连的线条。

可保存签名信息到XML文档, 也可以从XML文档加载签名信息。

可以生成包含签名图形的图片文件。

软件设 计

实现能实用的签名功能是很复杂的,则此简化了一些功能,目标软件仅操作签名信 息,不涉及签名时的文档。于是本软件的设计如下

文档对象

实现复杂的图形 软件首先是设计文档对象模型,使得内存中的一个个对象能包含要显示的数据,此处需要设 计一套对象模型来包含签名信息。

经过分析,可以知道,一个文档中可以包含若干个 签名,一个签名包含若干个线条,而一个线条包含若干个点,线条中的点相互连接来形成线 条,而同一个签名中的线条是不相连的,但可以相交。

因此我们可以设计出如下的文 档对象模型

点坐标数据列表PointArrayList ,该对象用于存放多个点坐标数据,在 这里表示一条任意线段,用户绘制线条时程序可以使用该对象的Add方法增加点数据。

PenMarkInfo 对象表示一个签名,该对象定义了签名的时间,线条的颜色,线条宽度 ,还包含了若干个PointArrayList对象来保存签名轨迹线条定位信息。

PenMarkInfoDocument 对象表示整体的签名信息对象,该对象定义了多个签名对象, 还定义了加载和保存文档数据的方法。