这两天在做一个小软件,不知道怎么的,做了近10年的程序员,现在才有这样的体会,原来开发程序真的很有意思。

当然,要想开发软件有意思,必须具备一些前提条件,首先,你要有足够的空余时间,其次,所开发的软件是自己的创意,而不是公司用来忽悠客户的,最后,你必须要有十分的热情。

那么,有意思在什么地方呢?说出来可能有人会笑,有两方面,一是创意源源不断地涌出来,二是这些新的创意被逐步地实现。在实现了自己的想法以后,会很有成就感,也很想与人分享。所以,我会在稍后将这个软件发布出来与大家共享。

这个软件最初源于一个突然闪出的念头,某一天我看到一篇关于如何截屏的文章,文章写得比较粗,不过指出了关键点,也就是如何截取屏幕的内容。说白,这也没什么,在.net里也就一条语句能够实现,于是我便萌发了做一个截屏软件的念头。

不过我没有立即动手,直到有一天这个念头在我睡觉的时候都在想,于是便开始动手。在流了1滴汗以后,截屏的基本功能做好了,可以在屏幕上画个区域,并且调整这个区域的大小,然后再将区域里的画面保存为一个图片。

做完以后马上就有新的创意,因为用过SnagIt,知道它有一个编辑器可以对截下来的图片再进行一些处理,加点方块、线条、文字什么的,于是就打算做一个图片的编辑器。可是,图片的的编辑功能可没有这么容易,至少对我来说是这样的,不过既然想到了,就一定要做,否则晚上睡不好。

于是,大概策划了一下,编辑器的功能与VS的窗体设计器类似,可以添加、删除、选择、拖动对象,而在这里,所谓的对象就是指一个个的形状,比如方块、圆形、文字框什么的。做这些功能,花了我3滴汗。

等这些功能有了以后,我发现要修改形状的样式也是件麻烦的事,比如背景色、线条颜色等,开始的时候放了一个.net自带的属性编辑器,可立即发现效果并不是太好,于是就想干脆做个形状编辑的架构吧,类似于属性编辑器,不过在界面形式上可以更松散。就这样,花了我5滴汗的功夫把它完成了。

在做编辑器的同时,我发现一个单纯的图片文件根本不可能保存附加的形状数据,必须要自己定义一个文件格式来存储数据,这样,花了我2滴汗设计和文件格式,以及实现了文件读和写的功能。

等编辑器做得差不多了,我又觉得界面上的菜单与功能的对应不是很方便,需要进行硬编码,这样开发起来很不方便。这样,我又花了4滴汗模仿了VS的命令子系统。也就是说,一个菜单或按钮可以绑定到一个命令,点击后直接执行命令,菜单由配置文件来生成。

下面轮到主窗体了,一开始不知道怎么设置好,后来想来想去就做了类似资源管理器的样子,右边是截屏图片的列表,那左边是什么呢?是目录列表,在这里,我又引入了“本地库”的概念。本地库就是存放截屏的容器,可以在库中建立目录和子目录,这与Windows的文件系统相同,不同的目录可以存放不同用途的截屏,当然,截屏文件是可以在不同的目录中移来移去的。于是,我又花了2滴汗。

既然主窗体做得象Windows资源管理器,那应该支持文件的拖放咯。稍微研究了一下,这个功能就实现了。可是能不能直接拖到Windows资源管理器或者其它应用软件,比如Word里呢?又是一番研究,实现了。还好这些功能都不是太复杂,只用了1滴汗。

所有的截屏都在库里,怎么把它弄出来呢?当然要提供导出功能啦。导出图片得仔细做,因为它可能会是用户经常使用的功能,于是花了2滴汗做成功了。

到此为止,大部分功能都有了,但我突然又想到有些人截了屏以后喜欢在图上放自己的个人信息,于是想到了增加一个水印的功能。水印应该是可以有多个,并且可以编辑,这样就必须与原来的程序兼容,利用现有的代码。又是一顿对原来程序的猛改,水印的功能又有了,花了我3滴汗。

是不是大致可以了呢?没有!选项啊,这是增加用户体验一个很重要的方面,又是一阵子改动,花了2滴汗,做好了。

还有什么?对了,本地化,这可是迈出国门的必要手段,又花了4滴汗。

现在总行了吧,呵呵。虽然软件的功能到这里已经全部说完了,可是创意远远不止这些……

如果你在看这篇文章,可能会很奇怪为什么总是要标出几滴汗这样。其实我只是想告诉你,这某个功能的工作量与最初的想法相比,其复杂程度有多少大。开始的时候根本不会想到最后会是什么样的东西,回过头来看,原来真的很有成就感。

转载于:https://www.cnblogs.com/effun/archive/2011/01/19/1939522.html

开发软件真是一件有意思的事情相关推荐

  1. 贾扬清:把生命浪费在有意思的事情上

    今天,是1024程序员节.在这个"攻城狮"自带光芒的日子里,阿里妹请来AI大神贾扬清,作为一位开发者,聊一聊他自己的开发者经历,希望对你有所启发. 贾扬清 阿里巴巴集团副总裁.高级 ...

  2. 定制开发软件所有权_职业所有权软件开发人员指南

    定制开发软件所有权 介绍 (Introduction) 您的职业正在流向大海吗? (Is Your Career Drifting Out To Sea?) Like a frog who's slo ...

  3. Andrej Karpathy发文谈神经网络后,引发的对硬件,软件和学件的思考

    作者:岑峰 概要:近日,Tesla AI总监Andrej Karpathy发表了一篇关于"Software 2.0"的文章,该文章引发了对未来神经网络的编程方式的更深入探讨,本文就 ...

  4. 程序员开发软件的意义到底在哪?

    有一篇热文<写了 8 年的代码,做过的项目都下线了,程序员的意义在哪里!>,作者 8 年工作和业余时间开发几十个项目,几乎都关闭了. 想当初,很用心的去开发每一个项目:如今,这些项目只能一 ...

  5. java开发软件难吗_JAVA开发太难了呀!30K程序员到底要会哪些技术?

    现在很多开发的人员只关注他们短期的工作前景,做的越久,发现自己越来越跟不上技术,所以,把时间和精力花在学习最能带来回报的新技术上是件非常重要的事情.这里是我们列举一些你需要马上开始学习的技术,让你不会 ...

  6. delphi还有人用吗?delphi过时了吗?为什么还有人使用Delphi开发软件?一文说清Delphi的领先一个时代的开发工具DNA

    我正在和一个不太熟悉Delphi的人聊天.他问Delphi到底是什么使很多人继续喜欢它?delphi还有人用吗?delphi过时了吗?为什么还有人使用Delphi开发软件?我以为我会分享我的答案,看看 ...

  7. 程序员开发软件的意义在哪?

    有一篇热文<写了8年的代码,做过的项目都下线了,程序员的意义在哪里!>,作者8年工作和业余时间开发几十个项目,几乎都关闭了. 想当初,很用心的去开发每一个项目:如今,这些项目只能一个个关闭 ...

  8. vs2015 开发软件_2015年重要的软件开发发展

    vs2015 开发软件 这篇文章是我对2015年与软件开发相关的一些最重要开发人员的个人观点和独到见解.我之前的评估适用于2014年 , 2013年 , 2012年 , 2011年 , 2010年 , ...

  9. 天云数据CEO雷涛:从软件到数件,AI生态如何建立自己的“Android”?| 量子位·视点分享回顾...

    视点 发自 凹非寺 量子位 公众号 QbitAI 技术的市场千变万化. 首先在算法上摩尔定律失效,大规模分布式大规模协同算力开始产生新的变化: 其次,互联网带来数据实时性的需求,爆发第三波数据红利: ...

最新文章

  1. 如何打造一支拖业务后腿的技术团队?
  2. 红绿灯问题(位运算)
  3. MapReduce 模式、算法和用例
  4. Python uuid 介绍
  5. 科大星云诗社动态20210811
  6. SQL注入-二阶注入(十)
  7. CentOS7下安装Redis — 单节点
  8. CGCKD2021大会报告整理(1)--宽度学习
  9. (连续子序列)唯一的雪花
  10. 鸣人的影分身(信息学奥赛一本通-T1303)
  11. 超越Hadoop的大数据分析之图形处理尺寸
  12. matepad和鸿蒙,华为MatePadPro配置速看:搭载了鸿蒙系统的它真比iPadPro强?
  13. WEB前端开发学习5大网站,你用过几个?
  14. 小程序携带参数跳转的方式wx.navigateTo的URL和通过data-传递
  15. 用 LSTM 预测股票价格
  16. wlan消失 网络适配器文件夹空了 设备管理器黄色感叹号 wifi那里看不到任何WiFi解决
  17. 计算机视觉基础知识:射影变换,仿射变换,相似变换(比例变换),刚性变换
  18. 好用的在线工具,提高你的办公工作效率
  19. 为何老人与年轻人都更愿意选择OPPO?这些用户需求值得关注
  20. poi设置word表格单元格宽度_java poi 设置word 格式如表格一类的

热门文章

  1. mysql 网站 数据库_mysql系统数据库
  2. 创智播客 大数据_中国电信启动嘉创智谷——新仓远景产业园5G部署
  3. php上传手机文件到服务器,安卓上传文件至PHP服务器(示例代码)
  4. linux下升级python2.0到python3.0
  5. SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
  6. 使用Spring Session做分布式会话管理
  7. JavaScript 闭包详解
  8. 正则表达式的简单认识
  9. 37条常用Linux Shell命令组合
  10. 使用GNS3简单模拟帧中继环境