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