这是一个简单的界面库设计,简单到舍弃了大部分的功能。但我仍然很臭美的认为它所做出的界面不次任何界面库------实际上它就是我写公司的游戏平台时设计的,也因为如此,不便公开代码,这里只说说设计思路吧。
设计这个界面库的首要宗旨是性能,其次是美观和可扩展性最后简单,很多东西都在这四者之间做了妥协。
简单:
1. PaintUI没有考虑Box-Model,因为它并不是作为一个完善的界面库而存在的,它只是工程中一个小小的包。(后来别人问起时,我居然说自己不知道Box-Model,现在想想,我发现自己太邪恶了~)
2.PaintUI并没有使用消息驱动等先进的方式,它只是简单的依赖了多态、继承、和一些模板。这样做带来的问题地球人都知道的,不过我敢保证至少在运行时,你根本看不出来~
3.PaintUI使用的是GDI+,在这里我没有留下任何可扩展的接口。也许你觉得应该使用DirectX或者至少使用GDI。额~ 要简单嘛~就这样吧。
4.PaintUI不可以移植,你看一下上一条就应该明白了~
5.使用PaintUI的人必须要了解它的结构和机制,所以要求后来维护程序的人至少要把源码读一下。反正也不多,读吧~
性能:
1.我能保证,当那个漂亮的界面的大小和内部控件布局发生翻天覆地的变化时,你不会感到有任何不协调的事发生。
2.绘制速度也是相当的快的,当你设置”拖动时显示窗口内容”选项后,使用另一个对话框在界面上快速移动,不会留下任何难看的痕迹。
3.至于内存的使用,我留了极大的可扩展性。不过如果你的皮肤完全使各种图片的话不要奢望内存的使用可以忽略不计。
美观和可扩展性:
在写PaintUI的过程中,我一直都在警惕美工组提出的各种稀奇古怪的要求。所以造成的结果是,当使用PaintUI扩展界面时,必须要了解PaintUI的实现。不过带来的好处是,只要你想得到的,PaintUI就能做到~