Inside Paint.net
作者:iRoseFire
本文档最新版本可到www.iRoseFire.com/rosefire访问,mailto:hotcht@hotmail.com
关键字:Paint.net,C#,代码分析
概述
最近发现一款开源软件“Paint.net”,华盛顿大学学生的作品,其实已经经过了n个版本的更新,现在据说得到了微软的支持,从About对话框中可以看到本地化工作就是微软的团队完成的。可能是一个极好的学习.Net编程的好例子。于是下载了源码进行编译,浏览代码中。。。。
此软件在国内各大软件下载网站上都有下载,下面为华军软件园对其的相关介绍:
“华盛顿大学学生用C#做了一个Paint.NET, 比Windows的MSPaint强大不少,包括Layer、Clone Stmap、Edge Detection、Motion Blur及History等,界面也很不错,样式有点像PHOTOSHOP的感觉,对图像处理有兴趣的朋友有福了,不过美中不足的地方是一次只能处理一张图片。另外此软件已经得到了微软的资助。”
其实在新版本中已经可以同时打开多个文件进行操作。
为了给有同样兴趣的人一些帮助,share一些我遇到的问题和心得。
来自官方网站的信息:
Paint.net现在的官方网站是:www.getpaint.net
建议有兴趣的家伙多浏览一些相关网页应该会有不少帮助。
编译问题:
刚开始编译我也遇到了一些编译不过的困扰,现在已经解决。
编译前仔细阅读 src/Readme.txt文件,还有programs/Readme.txt,后者在官方网站上没有提及。
我的编译环境:
WindowsXPsp2 + Visualstudio.net 2005 中文专业版,安装了tablePC sdk 1.7(这一步好像不是必须)
下载源码后
如果不方便从官网下载也可以从我的个人网站中下载:
www.irosefire.com/download/( 需要稍后提供)
加压到本地,
还要下载两个文件
dotnetfx.exe
NetFx64.exe
分别为.net 2.0 运行环境的32位和64位版本
下面为下载地址:
32-bit: http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
64-bit: http://www.microsoft.com/downloads/details.aspx?FamilyID=b44a0000-acf8-4fa1-affb-40e78d788b00
下载后通过类似下面的命令:
dotnetfx.exe /T:[full path to programs/x86] /C
netfx64.exe /T:[full path to programs/x64] /C
解压到源码包中。
其实
直接使用winare也可以解压这两个文件,然后将解压后的文件copy到x86/x64两个目录中就可以了饿,我觉得这种方式更加方便和容易理解,
打开src下面的工程文件:paintdotnet.sln
设置编译方式为:debug and package
然后点击重新生成解决方案就可以完成编译。可能需要几分钟时间。
编译完成后在src/setup/release生成了多个安装文件:
我的目录中有七个,分别是带有或者不带.Net运行环境的安装程序。
注意在Visual Sutdio中运行时要将配置有”debug and packae”改为”debug”模式,并且在项目设置中增加命令行参数:
否则运行会出现“修复某些文件的”对话框。
代码分析:
语言设置:
初次以debug方式运行时界面语言为英语,经过一番代码浏览发现需要经过如下设置可支持宣称的八种语言。
。。。
Undo/Redo实现
由于工作关系一直对Undo/redo的方式比较关注,通过对paint.net中的代码学习也发现了一些比较有意思的方面
基本上来说 ,Paint.net中的Undo、redo功能是通过command 和 memento模式实现的。
下面是一些关键类图:
未完待续