< 想法 > 软件的“换肤”技术早已不是什么新鲜事了,但细心的朋友一定已经发现了,现在正悄悄地流行了一种新的改善视觉效果的方法——这里我斗胆定义为“换肤色”技术吧!用过Winamp 5、Windows MediaPlay 9、MSN Messenger 6、QQ2004这些新版本软件了吧,呵呵,全都采用了所谓换汤不换药的“换肤色”技术。挺有意思是吧,下面我们就“自己动手,丰衣足食”。 首先我用eXeScrope打开了WMP9和MSN6的相关可执行文件和动态链接库,没找到有关界面的资源,晚辈才疏学浅,猜想可能它们的界面是实时计算出来的吧。QQ2004和Winamp5就比较直观了,一个是直接用BMP文件的,另一个采用的是PNG格式。 BMP文件没什么好说的,关于PNG格式我这里略说两句。PNG(Portable Network Graphics)是为了适应网络数据传输而设计的一种图像格式,用于取代格式较为简单、专利限制严格的GIF图像文件格式。PNG格式大致具有以下优点:高压缩率、支持Alpha通道(全透明、全不透明、可变透明)、提供Gamma(图像亮点)校正机制、提供二维交叉存取机制、支持真彩/灰度/颜色索引的图像。 分析了一下Winamp5的图形界面布局,他许多漂亮的阴影、渐变效果可不是BMP通过指定颜色透明能做到的;另外考虑到一个程序使用图片皮肤的话文件都会比较多,BMP的话一般都至少有几百K的总大小;所以我觉得PNG图片更适合来做绚丽的界面皮肤。 Delphi默认是不支持PNG格式的图片的,只能去下载第三方控件了。到DFW论坛里去搜了很多终于让我找到了PNGImage这么个好东东,带源代码、帮助文件,无需安装,支持PNG透明。呵呵,这样我们就可以开工了! < 动手 > 我先看了一下PNGImage的帮助文件,里面的《Example 3: Drawing png over other formats》是一个将一幅指定的PNG图片读入后覆盖到一幅JPG图片上的示例,我尝试了一下能很好的支持带透明的PNG文件。因为是要拿这些PNG文件来作程序界面的,所以我首先打算要把这个PNG图片画到窗体上去:
以上代码实现了将1.png文件读入后画到窗体上去,这张图片是Winamp5的默认主界面,其中右下角有一块凹入的是透明部分,怎么样,效果出来了吧(如图1)。
|
正在阅读:用Delphi来DIY一个软件"变脸"功能用Delphi来DIY一个软件"变脸"功能
2004-12-30 10:36
出处:
责任编辑:linjixiong
键盘也能翻页,试试“← →”键