上文用于演示的程序名叫MiniDraw,也许你已有所察觉――这应该是一个画图程序。不错,我的实验品就是经典的画图程序,并且这几天我已经把它编写出来了。这是一个小巧可爱的画图程序,麻雀虽小,五脏俱全,屏幕截图如下:
从图中可以看出,每个图形就是一个对象,支持各种属性设置,以及鼠标拖拉。我将MiniDraw能做的事情列举了出来:
l 存盘读盘,这依赖于MFC序列化的强大威力。
l 鼠标拖拉图形对象,为了不至于引来一大堆复杂的问题,我将拖拉的图形限定为一个,即你只能选中一个图形。
l 设置图形的各种属性,例如填充色,线条宽度,叠放次序等。
l 可设置画布的填充色,以及最小尺寸,如果小于这个尺寸,将出现滚动条。
当然,以一个专业程序的角度来看,MiniDraw局限性也非常的大:
l 不能进行剪贴板的操作,不能进行撤消重做,其实这涉及到数据层的设计,这是一个高层次的主题,像这样的小程序就免了吧。
l 图形类型比较少,只有三种。
l 图形的创建过程比较简陋,点击工具栏按钮时直接创建,没有经过鼠标的操作来创建。
l 图形不能多选。
l 程序的整体设计比较随意,扩展性不够强。
我得为自己辩护一下,时间太少了,这个小程序是晚上编写的,前后只有一个星期,而且是用代码+资源的方式完成的。所以,做到这个程度也差不多了吧,如果你觉得哪里不好,可以随意修改之,有一些明显改进的话,可否通知我一下,让我也拜读一下。
MiniDraw可能会有下一个修改版本,这是我初步的改进计划:
l 对创建过程的改进,支持鼠标拖拉创建。
l 增加几个图形:多边形,曲线,自由线。
l 主窗口增加多标签。
l 图形支持多选。
l 对图形的点击测试进行优化。
我不保证这些修改都能完成,这要看是否有足够的时间,如果时间允许,过年之前应该可以发上来,敬请期待。
MiniDraw涉及到一些技术,包括序列化,GDI绘制,通用控件的使用,这些都将作为以后文章的主题。
你可以从这里下载MiniDraw,体会一下它的小巧可爱:
http://download.csdn.net/source/318010
分享到:
相关推荐
小巧可爱的矢量画图程序,可用于学习参考之用。
MiniDraw:用mfc实现绘图的小程序,能画直线,矩形,椭圆,自由曲线
minidraw实现画直线,圆,矩形,多边形和鼠标轨迹功能,并带有调试窗口。
minidraw,hope to be helpfull
基于Qt中的widget实现的简单画板程序, 提供了以下几种,椭圆,直线,多边形,自由线,矩形的基本图元的绘制,如有问题可以找我交流
简单的绘图小软件,可以绘制线段,矩形,椭圆和任意多边形
MiniDraw是个小型绘图系统,实现了画直线、椭圆、多边形、矩形、随手画的功能。可以帮初学者体会MFC编程,巩固使用STL的vector.
用QT写一个画图小程序MiniDraw,要求化直线(Line),椭圆(Elipse),矩形(Rectangle),多边形等图元 每种图元用一个来封装。如CLine 各种图元继承父类CFigure 学习类的继承和多态
C++小程序 绘制基本的橡皮线 并能够进行保存等操作
具有画直线,曲线,多边形,填色等功能,基本的绘图功能都已具备。
实现画线画圆等一些基本的图形编程的几种方法
画图程序,通过巧妙的设计避免了画图方面的难点
实现一个小型绘图板软件系统,具有方便的图形用户界面,具有编辑、打开、保存和各种绘图功能(主类是MiniDrawPad)。
用父类下的子类实现各种多边形的绘制,画线条扇形,任意封闭曲线,椭圆矩形等