【分享】【源码】纯C#实现的mspaint增强版画图程序

ping3108 2015-08-12 11:12:12
加精
这是用C#/Winform/GDI+实现的类似mspaint的画图程序。目前实现了直线、折线、矩形、椭圆、指示箭头等规则形状,这些形状被绘制后,不会像mspaint那样,就动不了了,而是可以再次被编辑,包括旋转、缩放等。运行界面如下:


对于没做过这方面程序的人,最好奇的可能就是,你用Graphics类画出一个东西后,怎么样才能重新选中、移动、编辑它?
以画一个矩形为例来说明,你如果用Graphics类在一个控件(Control)上画了个矩形,并且把矩形的起点坐标、大小等数据记住,那么用户在控件上单击的时候,你就能判断出用户是否在矩形上单击了,如果是,就表示矩形被选中了,如果用户同时还移动了鼠标,那么就可以根据移动的距离重新计算矩形的起点坐标,然后重新画这个矩形。
这就是Extended Paint用的基本方法。在内部记住各种形状(线段、矩形、椭圆等)的起点坐标、大小、颜色等等信息,在用户移动、旋转形状后,要随即更新这些信息,并重新绘制形状。

其它的难点还有不少,比如用户将图像放大,并在放大的视图上绘制新的形状,这时候的处理跟未放大时有什么不同?再如撤销(后退一步)功能,怎么样放弃最后一次操作,返回之前的状态?放大和撤销这两个功能现在还为实现,但是大致思路已经有了。

做这个程序有两个目的,一是把功能写全后,用我之前写的一个控件库来做其UI,然后这个画图程序作为控件库的应用例子。二是做一个实用的截图、画图程序,尽量仿mspaint来做,但要在个方面有所增强。当然了目前Extended Paint还很简单,没有截图功能、不能粘贴位图、不能编辑文字等等,后面会继续完善。

源码下载地址:
http://download.csdn.net/detail/ping3108/8994427
...全文
12474 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
JhonDao 2018-08-22
  • 打赏
  • 举报
回复
表示一下对分享源代码的程序员的崇高敬意,再表示下我这个缺积分的人只能眼看看而已。楼主,求百度云链接的分享。
yueming72 2018-08-12
  • 打赏
  • 举报
回复
赞赞赞,很棒哦!!
zcq96 2018-08-12
  • 打赏
  • 举报
回复
这个很好,是不是文件体积大了呢?
Dr.Xin 2018-08-08
  • 打赏
  • 举报
回复
期待图层的概念,橡皮擦还有文字编辑楼主有更新吗?哈哈
_小黑_ 2017-10-12
  • 打赏
  • 举报
回复
支持一下 感谢分享
jhljhljhlooo 2017-10-12
  • 打赏
  • 举报
回复
选择一个之前画的图形后,是不是要把其他记录的坐标重新画一遍啊?
abccba12321 2017-09-27
  • 打赏
  • 举报
回复
非常好的例子,谢谢楼主。
思清绪静 2017-09-26
  • 打赏
  • 举报
回复
很棒的代码!拿来参考学习正好。
ilikeff8 2017-08-29
  • 打赏
  • 举报
回复
当成练习作品还是不错的,但如果要实用化则建议不要完全按照现有一些成熟软件的套路走,不要自己造轮子,而是开发取代轮子的东西,例如增加极坐标所见即所得的转换,自动建模,特效滤镜
benpaode_woniu 2017-08-29
  • 打赏
  • 举报
回复
挺好的例子,楼主加油,这是一种增强自己实力的好方法
baidu_33834352 2016-11-24
  • 打赏
  • 举报
回复
GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOD!
风叔 2016-10-13
  • 打赏
  • 举报
回复
如PS一样,一个操作差不多要Save一张图,撤销起来就简单了,
liym15 2016-09-26
  • 打赏
  • 举报
回复
厉害,加油,期待新的东西出来
mjp1234airen4385 2016-09-18
  • 打赏
  • 举报
回复
楼主加油,这是一种增强自己实力的好方法
飞翔的哈皮 2016-09-17
  • 打赏
  • 举报
回复
楼主不一般.
lmq78714 2016-05-01
  • 打赏
  • 举报
回复
看起来不错,加油。。。。
afjafjafj2008 2016-02-02
  • 打赏
  • 举报
回复
谢谢楼主分享!!!
little sky 2015-12-02
  • 打赏
  • 举报
回复
BitCoffee 2015-11-23
  • 打赏
  • 举报
回复
kuaile999 2015-08-30
  • 打赏
  • 举报
回复
必须说,很好!!!!!!!
加载更多回复(33)

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧