zoukankan      html  css  js  c++  java
  • C#.net winform skin 皮肤大全devexpress,IrisSkin,DotNetSkin,SkinCrafter

    以下介绍的换肤控件(排名不分先后)基本上都是要花钱注册的,委实郁闷,可以考虑自己贴图实现。
    1. 东日IrisSkin
    IrisSkin 共有两个版本,一个是IrisSkin.dll 用于.Net Framework1.0/1.1 和IrisSkin2.dll 用于.Net Framework2.0版本。详细内容见安装文件的help文档。
    除此之外,东日还有两个很cool的Menu: MatrixMenu和WheelMenu。
    (详细内容请参见http://www.sunisoft.cn/irisskin)。
    2. Skin++
    这个是我最初使用过的换肤控件,通过添加一个com引用,然后初始化一个skin对象,通过InitializeSkin引入ssk文件进行换肤。(详细内容请参见http://www.uipower.com)。
    3.DotNetSkin
    DotNetSkin的用法和IrisSkin差不多。此外,网站提供了几个免费的很cool的控件,
    Button,RadioButton, CheckBox, 那个button和codeproject的XPButton有的一拼了。
    (详细内容请参见http://www.dotnetskin.net)。
    4.SkinCrafter
    SkinCrafter地用法和Skin++有点类似,都是添加一个Com引用,然后加上几句语句用来Load皮肤,和Apply皮肤。另外,SkinCrafter还另外提供了为Windows Installer换肤的软件。
    (详细内容请参见http://www.skincrafter.com)。
    5.Appface
    Appface支持的语言与开发环境是我见到的最多的,在。net上面使用起来相对前面4中都相对复杂一点, 不过看看那个Demo也差不多会了,还是几个函数的使用。
    (详细内容请参见http://www.appface.net)。
    6.SkinEngine
    Alcyonesoft推出了SkinEngine,支持的语言数目与Appface不相上下,用法和Skin++, SkinCrafter类似。(详细内容参见http://www.ksdev.com)
    其他还有
    DotNetMagic提供了许多漂亮的控件(http://www.dotnetmagic.com),
    DotNetBar许多很有创意,很炫的控件(http://www.devcomponents.com
    Divelements 的许多漂亮的控件(http://www.divelements.co.uk
    另外国内的。net控件网搜集了很多。net下的控件(http://www.dnc.com.cn) 

    比较1

    东日IrisSkin
    存在内存泄漏,多次创建关闭相同窗体,内存只增无减
    DotNetSkin
    和上面的IrisSkin很类似
    DotNetBar
    提供替代控件,适用于新项目,而对于原有工程需要换肤不太适合
    Skin++
    在dotnet中,需要添加com引用。是比较早的一个换肤系统

    比较2

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

    appface.dll 使用
    1、需要添加的API声明:
            //---------------------------------
            //The declare for AppFace
            [DllImport("appface.dll")]
            public static extern int SkinStart(string SkinFile, int nDefWinType, string CheckSum, int nType,
                int hInstance, int nLen);
            [DllImport("appface.dll")]
            public static extern int SkinRemove();
            [DllImport("appface.dll")]
            public static extern int SkinWindowSet(IntPtr hWnd, int nSkintype);
            [DllImport("appface.dll")]
            public static extern int SkinWindowSetEx(IntPtr hWnd, int nSkintype, int nResourceId,
                int nUrfLoadType, string SkinFile, int hInstance, int nLen);
            //-----------------------------------
    2、在Main函数或者首先启动的窗体添加:
                if (Form1.SkinStart(Application.StartupPath + "\\belv.urf", 4, "", 1, 0, 0) == 0)
                {
                    //Load a basic URF skin if failed (may be expired)
                    Form1.SkinStart(Application.StartupPath + "\\gtclassicex.urf", 4, "", 1, 0, 0);
                }
    其中Form1为窗体的name

    ===================================================================
    actskn43.ocx
    ActiveSkin 4.3  对于窗体的控件支持最少,甚至button。
    使用:将ocx添加到toolbox,拖放到窗体上,在load事件中添加:
    axSkin1.ApplySkin((int)Handle);
    即可
    ====================================================================
    DirectSkin.dll
    不支持的控件要比active少,但是仍然不支持button等。
    使用方法:
    在使用skin的窗体上添加:
                axWbocx1.Show();

                // Try setting up a skin (requires dogmax in sample skins)
                axWbocx1.InitWB();
                axWbocx1.SetRootPathStr(Environment.CurrentDirectory + "\\skins\\");
                axWbocx1.LoadUIS("xp corona\\xp corona.uis");
                axWbocx1.DoWindow(this.Handle.ToInt32());

    注意皮肤的路径
    ======================================================================
    DotNetSkin.dll 和 IrisSkin2.dll
    支持.NET的大部分控件,但是对strip不支持
    且刷新严重,使用方法简单
    ======================================================================
    SkinPlusPlus.VS.Net 支持的控件最全,支持部分第三方控件,dock窗体拖动时,效果不好。
    很好用,但是没有皮肤编辑器
    破解的是不是完整,未知----没有皮肤测试
    使用 方法:
    引用:using SKINPPDOTNETLib;
    声明;public static SKINPPDOTNETLib.SkinPPDotNetClass SkinPPObj;

    在Main函数中添加:
                SkinPPObj = new SkinPPDotNetClass();
                SkinPPObj.LoadSkin("PixOS.ssk", false);
    注:必须在main中,不然对menustrip支持不好

    以上是个人的测试,可能不是很准确,不过大致如此。

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

    http://www.cnblogs.com/markor/archive/2008/09/27/1300110.html

    http://tech.goodspeed.com.cn/118025.aspx

    http://hi.baidu.com/dujinghong/blog/item/74d48e5c3abfeb46faf2c0ef.html

    http://hi.baidu.com/liangjianking/blog/item/17c40267aabe7523ab184c8e.html

    http://download.csdn.net/source/252225

  • 相关阅读:
    在插入一条记录后 取得自动增长ID
    hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些
    单例模式
    聚簇索引与非聚簇索引的区别
    基于SQL SERVER2008的SCCM2007部署
    XML架构下的表结构设置主键
    IE6与IE7下一点样式的区别
    Session丢失原因与解决方案小结
    Python_如何去除字符串里的空格
    Python_让人脑阔疼的编码问题(转)+(整理)
  • 原文地址:https://www.cnblogs.com/emanlee/p/1531255.html
Copyright © 2011-2022 走看看