您的位置:程序门 -> delphi -> 网络通信/分布式开发



vista以及msn的皮肤


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vista以及msn的皮肤 [已结贴,结贴人:zuoansuifeng]
发表于:2007-01-16 09:15:06 楼主
rt:

ps:两个问题。

    1:msn换肤;就是那种改变窗口的配色方案是否是把所有的控件放一个容器里面   比

如panel里面   然后全部一起改变色彩的缘故。(个人觉得应该不是用到拦截消息,在

窗体上重画的那种技术)

    2:vista;vista的皮肤是如何实现以及vista有无皮肤包可下载?  

    望大家不吝赐教~~~
发表于:2007-01-16 09:40:071楼 得分:0
自己up一下先~~~
发表于:2007-01-16 09:52:452楼 得分:0
发表于:2007-01-16 10:47:353楼 得分:16
msn是贴图的,要实现这样的效果要用自绘控件或第三方控件(见过一些商业控件不错,不知道有没有免费的)。改变颜色的话,就比较简单,直接改控件的背景就可以了。
发表于:2007-01-16 11:04:124楼 得分:16
msn是用directx画出来的,特别是对话窗口,整个就一个hwnd,所有东东都是directx做的,主窗口还嵌入了几个webbrowse(广告)

vista是和xp一样的theme技术吧,有个服务配合的,操作系统也从底层就支持了
发表于:2007-01-16 11:59:085楼 得分:16
哦,原来在这发了贴呢:)
发表于:2007-01-16 12:35:336楼 得分:16
我觉得那个改变背景color,其实通过通道,就可以变换成不同的color了。。。
发表于:2007-01-16 13:12:127楼 得分:16
businessskinform这组控件   可以实现更换皮肤
发表于:2007-01-16 13:12:598楼 得分:16
倒是有个皮肤控件类似msn,不过要钱的,他好像就是用通道做的
msn的好像不是
发表于:2007-01-16 13:25:169楼 得分:0
嘿嘿   感谢楼上各位的关心   小弟把这两天研究的皮肤原理实现贴上来

=====================================================================

                                                            皮肤研究

1:第3方控件
       
若用网上现成的控件的话可以有2种选择,第一种是很流行的vclskin,这个第三方的控件已经很程序了,只要设置一个激活的属性为true,然后有一个加载的皮肤的路径把皮肤静态的加载就可以了。第2种选择的话可以可以用appface苹果牌的dll,这是一个已经封装好的dll了,目前我也没有找到它的原码,appface.dll这个dll封装了皮肤实现的所有原码,以及接口函数的调用和实现,苹果皮肤的话可以去苹果的官网下载,这种dll比vclskin又有所不同,它的加载方式是动态的,我想加载哪一个皮肤的话就可以调用它的加载函数去加载,而vclskin是二个属性设置,他需要安装dpk控件包。其他的第3方的控件和这两种大同小异,这里总结出一个结论,若单一的调用vclskin显然比appface好很多,简捷,方便;而复杂的调用的话建议用appface,动态的调用想要的皮肤,实现轮换的效果。这里有appface的demo程序以及我自己写的一个vclskin的例子。appface的unitappface单元提供了这个实现皮肤的所有函数,具体的可以看自带的帮助。

2:换图片的方法

      原理:换图片的方法原理就是拦截消息,在窗体上重画。mian给了我一个他写的demo,里面所实现的效果就是这种方法实现的,他的消息没有用到。他是通过把那些图片用设计工具把每个窗体上的一个部分给截取下来,然后通过ini文件的方式读取出来给一个tbitmap,最后加载上去的。delphi有自带的画bitmap这种图函数bitblt,bitblt这个函数在nt环境下,如在一次世界传输中要求在源设备场景中进行剪切或旋转处理,这个函数的执行会失败,而setwindowrgn这个api允许我们改变窗体的状态。combinergn这个api是利用两个区域组成一个新的区域,用fillrect这个api指定的刷子填充一个矩形达到背景色填充的效果。

3:msn皮肤

msn换肤,就是那种改变窗口的配色方案是否是把所有的控件放一个容器里面,比如panel里面   然后全部一起改变色彩的缘故。(个人觉得应该不是用到拦截消息,在窗体上重画的那种技术)后来咨询了一下猛禽,他告诉我说msn的换肤是根据贴图来的,这样的话我们就需要自绘控件,来达到那种效果。msn的改变配色方案的话就是改变控件的背景色彩,我想到一种方法就是把所有的控件放在panel上面,然后换背景色彩的时候改变panel的色彩,对本身的色彩进行画图运算。

总结:一般的第三方控件只支持delphi本身自带的控件,而我们的程序中如果用到自己封装的控件或则另外的第三方控件的话,这样是不支持的,得有我们自己来美化,来实现图片的重绘。
发表于:2007-01-16 13:31:5710楼 得分:0
起始我还是觉着标准的windows控件看起来舒服,除非客户有特殊需要
发表于:2007-01-16 13:37:2611楼 得分:0
是啊   呵呵   界面美观,功能齐全   所以现在写软件也跟着他的界面模仿咯
不然我才不要去研究什么vista   头痛ing~~~``
发表于:2007-01-16 13:48:0812楼 得分:0
没有办法。。。。。。
发表于:2007-01-16 17:36:3613楼 得分:4
贴图的
发表于:2007-01-17 08:33:5114楼 得分:0
msn还有动画,好像部分内容随机的,我以前简单看过那个鱼的,鱼游动没看到重复,不知道是动画比较长还是随机控制。
发表于:2007-01-17 08:38:0115楼 得分:0
msn的我知道是贴图搞上去的了~~~~~~
发表于:2007-08-03 11:58:5316楼 得分:0
这个也精华?
发表于:2007-08-21 10:40:4617楼 得分:0
好长时间没来了,都不知道自己等级了!
发表于:2007-11-15 17:25:4518楼 得分:0
这个也精华?
发表于:2007-12-12 15:58:0519楼 得分:0
精华,无语了
发表于:2007-12-30 09:21:4420楼 得分:0
这里探讨一个大方向上的问题,我觉得就不错啊
9楼zuoansuifeng说的就很很好
当精华帖子也不为过
个人觉得解决一个具体的技术问题不值得太炫耀
反而是这种抽象给人从思想观念上带来的改变才是最有用的。


快速检索

最新资讯
热门点击