Formycareer

积极生活每一天!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
刚入职不久,公司原有一个根据模板自动生成Word的程序,也可通过本程序通过编程创建Word,框架已经建好,只是一些功能还没有完善。算是对能力的一个考验吧,我接到了这个任务,经过三个月星期的努力,交差了。 最近两周一直在学习GDI+, 图形程序设计。用的是Mahesh Chand的教材,韩江等译。 昨天总监看我把书看的差不多了,就给了我一个网址 http://www.codeproject.com/KB/cs/DrawToolsRedux.aspx 一个画图工具,外国人搞的,让我看看人家的设计结构。并且告诉我关于存储等方面的功能不用看,只看画图那部分就OK了。 今天算是看这个程序的第二天了吧。关于画图方面的功能熟悉的差不多了。主要是从设计框架上理解。本人对这个比较感兴趣,想往架构方面发展。 以下是我对DrawTool画图部分的阶段性理解. 程序当中的MainForm就不用管了,无非就是提供给用户操作接口。获取各种所需参数而已,画图部分主要从DrawArea控件开始。我们可以把它通俗的理解成画布。 画图模块介绍: DrawArea(画布)中可以包含多个Layer(层),每个Layer上可以包含多个DrawObject(图形). 出于对多个Layer的管理,作者新建一个Layers,用来对多个层的可见性,活跃性等等的管理。 同样,作者为了对多个DrawObject进行管理,新建了GraphicsList类,用来对多个DrawObject对象进行管理。 通过上面的说明,清楚了画布,层,图形之间的存在形式。 下面,我们考虑一下,怎么样绘出图形来呢。 用过画图工具的都知道,当我画一个图形时,首先要选择绘画对象,比如要画一个矩形。 绘画过程,可以分成三步:第一步,按下鼠标左键。第二步,拖动鼠标。第三步,松下鼠标,即可完成图形绘制。 ToolObject类是用来绘制图形的工具类,实质上当中正是包含了,上面所述的绘制过程。 OnMouseDown OnMouseMove OnMouseDown 三个步骤。 具体的图形绘制类,要继承自这个类。比如ToolRectangle就要继承自这个类。 DrawArea中包含一个ToolOject集合,当用户触发 OnMouseDown OnMouseMove OnMouseDown 时,通过调用ToolOject中相应的方法(OnMouseDown,OnMouseMove,OnMouseDown),实现图形的绘制。
posted on 2011-08-04 15:36  mycareer  阅读(436)  评论(0编辑  收藏  举报