RT:PS:两个问题。  1:MSN换肤;就是那种改变窗口的配色方案是否是把所有的控件放一个容器里面 比如Panel里面 然后全部一起改变色彩的缘故。(个人觉得应该不是用到拦截消息,在窗体上重画的那种技术)  2:vista;vista的皮肤是如何实现以及vista有无皮肤包可下载?   望大家不吝赐教~~~

解决方案 »

  1.   

    MSN是贴图的,要实现这样的效果要用自绘控件或第三方控件(见过一些商业控件不错,不知道有没有免费的)。改变颜色的话,就比较简单,直接改控件的背景就可以了。
      

  2.   

    MSN是用DirectX画出来的,特别是对话窗口,整个就一个HWND,所有东东都是DirectX做的,主窗口还嵌入了几个WebBrowse(广告)vista是和XP一样的Theme技术吧,有个服务配合的,操作系统也从底层就支持了
      

  3.   

    我觉得那个改变背景Color,其实通过通道,就可以变换成不同的Color了
      

  4.   

    businessSkinform这组控件 可以实现更换皮肤
      

  5.   

    倒是有个皮肤控件类似msn,不过要钱的,他好像就是用通道做的
    msn的好像不是
      

  6.   

    嘿嘿 感谢楼上各位的关心 小弟把这两天研究的皮肤原理实现贴上来=====================================================================                              皮肤研究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本身自带的控件,而我们的程序中如果用到自己封装的控件或则另外的第三方控件的话,这样是不支持的,得有我们自己来美化,来实现图片的重绘。
      

  7.   

    起始我还是觉着标准的windows控件看起来舒服,除非客户有特殊需要
      

  8.   

    是啊 呵呵 界面美观,功能齐全 所以现在写软件也跟着他的界面模仿咯
    不然我才不要去研究什么VISTA 头痛ING~~~``
      

  9.   

    msn还有动画,好像部分内容随机的,我以前简单看过那个鱼的,鱼游动没看到重复,不知道是动画比较长还是随机控制。
      

  10.   

    MSN的我知道是贴图搞上去的了~~~~~~
      

  11.   

    这里探讨一个大方向上的问题,我觉得就不错啊
    9楼zuoansuifeng说的就很很好
    当精华帖子也不为过
    个人觉得解决一个具体的技术问题不值得太炫耀
    反而是这种抽象给人从思想观念上带来的改变才是最有用的。
      

  12.   


    我有几套VISTA的皮肤,楼主需要可以发给你