向南,我的第一份码农工作
1997年7月中旬,我踏上了南去的火车。没有留在北京,也没有回到父亲所在的国企。大学里的成就和信心在此时荡然无存,第一次踏入社会,内心充满了忐忑与不安。未来是什么颜色呢?
未来不是大海的蓝色,让人充满幻想;未来也不是红色的,让你激情澎湃;未来是白色的,等着我绘上浓浓一笔。我穿着白色的短袖,来到广东这个7月充满白色阳光的地方,即使没有太阳,在户外也会汗流浃背。在当时,进国企或者政府机构,就是踏踏实实地等着从助理工程师转为工程师,然后一步一步晋升。我进了一家美籍华人开的公司,第二天就被布置了一项试用期任务:对任意一个不规则多边形进行渐变填充,开发环境VC,时间以两周为限。虽然没有直接说,但两周完成不了的话,估计就要走人了,让人多么不能平心静气。
虽然在最后毕业阶段跟老赵同学借了本VC的书,翻过两个星期,但在教研室上机也就实操过一次,还啥都没干成。在配发的电脑上折腾半天,还不知道怎么开始。翻书吧,好歹公司VC++的书不少,至少知道怎么建立一个工程,可以运行案例程序。
找到CDC类(1),知道了填充矩形有FillRect和FillSolidRect函数,第一个函数填充矩形的颜色要靠设定画刷来确定,可是只有一种颜色的画刷,怎么画渐变颜色?第二个函数直接填充颜色,颜色表示方式我还没搞清楚。任意形状怎么做?给一个坐标序列吗?画形状跟填充有什么关系?我一边翻着书,一边在纸上画着,希望能找出点儿思路,可是一点头绪都没有!
房间里没有空调,晚上睡觉汗流浃背,抓了一只钻进蚊帐的蚊子,关上灯后不知道从哪里又偷偷进来几只,叮了我好几个红包,白天浑身发痒。我在想:我到底为什么非要跑来南方?在国企不是挺好吗?这是何苦呢?如果试用任务完成不了,是否要打道回府?那多丢人!
总之,第一个星期,我迅速从兴奋到焦躁,开始怀疑自己。但又有另外一个声音:你不能输,你没有退路了!
事在人为。是的,事在人为。内困要求助于外交,第二天我去找老码农沟通,他们建议我好好把CDC函数研究一遍。我先搞清楚了颜色表达式RGB,每一个参数分别用一个字节表示,0~255,所谓渐变也就是线性调节RGB中的一个或者多个参数,可是没有这样的画刷啊。“π”,当看到这个字符时,想想祖冲之是怎么算圆周率的——通过尽量多的等边多边形来推算,因此我可以把矩形按高度或宽度拆分成很多个等宽矩形,对每个矩形按颜色线性循环进行填充。非常好,我非常兴奋地解决了第一个矩形渐变填充的问题。可是怎么搞定多边形呢?我又陷入了新的问题中,一时找不到解决办法。Polygon只是解决了画多边形的问题,填充还是单色的。
到了VC这样的集成开发环境下,只要不是算法问题,其他的所谓技术问题就是一层窗户纸。老码农看我一筹莫展,建议我再看看CDC类还有哪些可用的函数,会引用到哪些变量。天哪,竟然还有CRgn类——任意区域类,窗户纸终于被捅破了。利用CRgn解决了任意多边形的问题。此外ClipRgn这个函数可以限定不规则区域,即使你画出边界也不会显示出来,确保不会次次都画出矩形来。
码农的第一份工作终于落地了,我认为毕业之后前三年的工作中,你能学习与掌握的知识和技能将会至少影响你五年,这是我的亲身体会。我那三年一直保持着良好的分析代码逻辑和做笔记的习惯,这让我以后有条件吃了多年的老本!
(1)CDC类,是微软MFC开发框架中的一个C++封装类,主要面向输出设备,提供基础绘制函数。