.NET程序界面探讨之1:Skin++篇

工作一直很忙,很久没有写博客了,有个朋友看过我的代码生成工具,觉得界面不错,随整理了一下界面代码,并加入了皮肤功能,现公布以飨读者。
可能做过Winform界面的朋友都知道,能够实现换肤的控件有很多,但做的比较不错的有如ActiveSkin、SkinCrafter、Irisskin、Skin++等等,不过都是收费的界面控件,这些控件很多来自C++的时代,但由于是OCX控件的方式,所以也可以使用到C#的Winform界面换肤中。
本人做过ActiveSkin、Skin++的界面换肤功能,觉得两者很是相似。现将Skin++的使用实现介绍如下。

1、定义一个Skin++控件变量用来存放。注意,该控件对象只要在主窗体中定义即可,其他派生的界面都会具有相同的皮肤效果。
ContractedBlock.gif ExpandedBlockStart.gif Code
public SKINPPVBCOMLib.SkinPPVBComDllClass SkinOb;//用来设置皮肤的控件变量

2、定义一个函数,用于加载相关的皮肤。
ContractedBlock.gif ExpandedBlockStart.gif Code
            try
            {
                
if (SkinOb == null)
                {
                    SkinOb 
= new SKINPPVBCOMLib.SkinPPVBComDllClass();
                }
                
if (skin != "" && skin.IndexOf(".ssk">= 0)
                {
                    
#region 设置按钮控件的效果,默认没有特殊效果
                       
//0 button 1 checkButton 2 RadioButton
                    SkinOb.SetButtonType2((int)this.cmbChooseDb.Control.Handle, 3);
                    
//SkinOb.SetButtonType2((int)this.fstChk_All.Handle, 1);
                    
//SkinOb.SetButtonType2((int)this.radStoreProc.Handle, 2);
                    #endregion

                    SkinOb.InitializeSkin(skin);
                }
                
else
                {
                    Marshal.ReleaseComObject(SkinOb);
                    SkinOb 
= null;
                    SetSystemRenderMode(
false);
                }

                
this.Hide();
                
this.Show();
            }
            
catch
            {
                EnableUIMenu(
false);
                MessageBox.Show(
"皮肤加载出错,请检查是否存在指定的皮肤文件!");
            }

在代码中添加 this .Hide();this .Show();是为了更新界面,否则会出现一些界面效果还停留在原有效果上,这样处理一下就比较好了。

3、其他注意事项:
有时候您的项目代码是强名称的,那么也需要所引用的东西是强名称的才行,Skin++的控件对象默认是没有强名称的,需要强名称的话,那么执行下面的代码进行包装一下即可:
ContractedBlock.gif ExpandedBlockStart.gif Code
//把Com类型的控件用强名称进行包装,DOS命令
tlbimp SkinPPC#COM.dll /primary /keyfile:SharpCode.snk /out:SKINPPVBCOMLib.dll

另外要注意的是,如果在各种SKin++的定义皮肤中切换,效果很平滑,也很好,但是如果切换到系统默认的皮肤,总觉得界面有一些效果残留,不太好,因此最好提示软件客户重启软件。

4、界面各种皮肤效果如下

Skin1.jpg

Skin2.jpg

Skin3.jpg

Skin4.jpg

Skin5.jpg

默认没有皮肤的界面
Skin6.jpg

演示程序: http://files.cnblogs.com/wuhuacong/SkinPlusDemo.rar 
感兴趣的可以下载来研究研究,已经包含了上图的各种皮肤文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值