初级软件实作 - 星便笺 - 之一
【前记】
很久很久没有写博客园了,其实我压根就没写过博文,额。。。。。再不写这博客开来就浪费了。
这个学期我们开始有软件实作课程,题目是抽的,我抽到的是做个仿Windows便笺的小程序。题目如下:
Minipad2(便笺小程序):可在windows中打开一个小窗口来记录内容
按用户点击,在Windows屏幕的特定的位置,生成一个便笺
便笺可录入文字,图片,音频,链接,保存
可设置为固定便笺(windows开机后自动打开)
便笺可移动位置,也可以隐藏更改大小
额, 当初没怎么看题目,现在复制过来才发现,这个题目要求还是蛮多的= =。居然还要图片、音频、链接。
个人特别喜欢Windows 7的桌面便笺,做得太好了,简约,记点儿琐碎的事儿特别方便,界面也很棒,特别是这几天还发现有几个隐藏的功能,详见Microsoft官方的介绍:http://windows.microsoft.com/zh-cn/windows7/using-sticky-notes
用什么语言开发呢?当然是我最熟悉的C#.net啦,想法很多,已经写了近两个星期了,要吐血了,已经实现了挺多功能的,不过离目标还好远啊。现在已经实现的有:
1、透明存储。
将所有的文件操作封装在一个静态类里,每次要保持便笺只要填写一些参数再调用函数就可以了。这里面是和第二个结合在一起使用的,即时存储,虽然磁盘压力可能比较大,但数据量很小的情况下应该问题不大。考虑过用轻量级数据库,比如Access、SQLite之类的。后来觉得,太麻烦了,自己写一个文件不就完了吗。文件目录默认在系统盘,重装会丢,考虑到Windows便笺也是这样的,所以不管了。以后最多加个备份功能呗,反正这个是根据用户加密的,密钥与Windows用户有关,只要换一个用户就无法读取了。
2、文件采用DES加密,用户透明。
文件采用可逆加密,密钥与用户有关,尽量在用户层透明,用户不用额外登录什么的,进入桌面之后就可以用,且不同的用户之间相互独立,哈哈,个人觉得这个想法蛮好的,我的目标就是尽可能简约。但是,必须要简约而不简单,用户体验很重要。
3、文本的基本格式模仿json,自己写了一个函数将类的属性转换为json字符串,再转换回来。
php有专门的函数实现(json_encode、json_decode)这个不多说了,就是字符串的处理问题。
4、所有的便笺会在同一个层显示。
就像Windows 7的便笺一样,单击任务栏的图标,所有的便笺都能显示出来。这个实现起来比较纠结。当初查资料查得快疯了,压根搞不懂它是怎么实现的。不知该叫什么技术。具体的效果是这样的:
图中的每一个便笺在预览时都是同时显示的
5、自定义窗体外形、窗口淡入淡出以及无焦点窗体,基本都是纯代码实现的,因为自定义窗体形状之后Win API不起作用。
主要的就这么多吧,上图。右下角的红色是测试用的哈~
以上是已经实现的功能,代码先不上了,以后再上吧,接下来要实现的还很多,稍微列一下:
- 闹钟
- 在RichTextBox里插入图片,并且图片有链接