绘图小工具0.0.1版本发布--vc版本
时间:2010-09-16 来源:ouzi
最近遇到了一些要绘图的,找了一下,发现要绘图的地方还是蛮多的,但往往绘制的图形都比较的简单,比如做一些简单的统计,
常常都只要一个图,画一个x-y轴再加一条拆线,而网上找到的要么无比复杂,要么无比简单,达不到要求,所以做这个这样的绘图
程序还有很有用处的。
绘图程序比较好的开源的:
①对于C#,就是大名鼎鼎的 DrawTools 了,如果想学习一些绘图的,以及一些简单的面向对象编程的,可以自行google。
②对于C++,那就是drawcli了,可是我去codeproject上看了一下,源码好像就有1M多,怕了,就到google上找,找到了 海市蜃楼 的这篇文章,是模仿的drawcli,但是简化了很多,可是他的东西在设计上有点问题,上下层耦合紧密,不利于分开来用。下面这篇文章讲一下这几天的改造过程和一些遇到的问题,我将现在的版本定义为0.0.1,是因为这个版本还有很多问题,以后我会持续的更新。
类图
类的继承关系比较简单,CODShape是所有图元的基类,CODShapeTool是所有图元的操作的基类,是一一对应关系
所做和一些分离操作
在原源码中,甚至在CODShapeTool这样的基类里面都存在着对上层的调用,这是不合理的,我在改造的过程中,引入了CMetas和CMetaContext这两个类,CMetas相当于图元的集合,以及对图元的操作,CMetaContext如其名,主要负责保存一些上下文信息,这样就将在原程序中的是层的对图元的操作全部放到CMetas中来。
循环引用
这在C#中好像从来都不是问题,但是对于C++,比如CMetaContext类要用到CODShapeTool,而CODShapeTool为了与上层解耦,就需要引用CMetaContext这样就形成了循环引用,对于C++中的循环引用,我研究的不多,对于我遇到的这种情况,可以采用在.h文件中用前置申明,在.cpp中include的办法来解决。
其它问题
源码之前,了无秘密,有什么疑问,可以提问,或者等待下一个版本的发布。
关于版权,本源码可以随意复制,修改或者用于商业用途,但请保留作者申明。同时不知道海市蜃楼他的版权申明是怎样的,如果有任何版权问题,可以与我联系,我会马上处理。
嗯,这个IntraduceToPrint我会持续更新下去,记得以前想找一些面向对象编程的源码时,总是找到的,要么太简单,泛泛而谈,要么无比复杂,让人望而却步,所以我会把从0.0.1到以后的版本都保存起来,这样有利于和原来的我一样的初学者。
源码点击这里。 如果要密码,可以试一下:ouziprint