zoukankan      html  css  js  c++  java
  • 更换Winform 皮肤(上)使用现有皮肤

    偶然的想法,遇到了Winform更改Winform皮肤的问题。

    WPF没有这个问题,WPF的控件都是没有外形的,完全可以根据自己需要自由发挥,可以通过直观的编码实现各种绚丽的界面效果,网上也有很多现有的style、template供参考。

    相比WPF,Winform换肤就没有那么幸运了。实现起来相对比较麻烦。

    Baidu+Google,发现解决Winform换肤的实现方法,基本有如下两种。

    实现1.使用现有皮肤。优点:实现及其简单,基本不需要编码;但细节需要注意。缺点:不能自己定制

    实现2.完全的GDI+绘制。有点:可以完全根据个人爱好制作个性化的界面。缺点:完成一个用户体验良好的皮肤,编码量和前期图片素材准备需要花费精力。

    本文首先介绍实现1:使用现有皮肤的方法,后面的博文会介绍实现2.

    实现1,原理是很简单的,你像是换主题一样,只需要第三方法的类库就可以实现
    SkinCrafter   http://skincrafter.com/
    irisskin      http://www.sunisoft.cn/irisskin/index.htm
    DotNetSkin    http://www.dotnetskin.net/
    还有更高级的 Infragistics NetAdvantage
    所有这些第三方类库,DebugLZQ没有都去验证。只是试了下IrisSkin2.dll(下载),和SSK皮肤文件(下载),这个皮肤里面有一个展示Demo,可以查看各种皮肤对应的效果。

    博客园里有几篇类似的文章,但是LZ试了一下。主要的问题是:很多文章相互参考(你懂的.......),很多根本都没有去试过,结果按着他的步骤去尝试,运行不了,存在相同的问题。无良的人啊,误人子弟!

    下面step by step来实现这个Demo。

    1.新建一个Winform项目,把上面的dll文件和SSK皮肤文件放入项目的bin/debug目录下。并添加这个dll文件的引用。

    2.在窗体cs文件中添加如下傻瓜般的代码,如下:

    namespace TaskVision_V_1_WinForm
    {
        /// <summary>
        /// Winform 皮肤 Demo
        /// By DebugLZQ
        /// http://www.cnblogs.com/DebugLZQ
        /// </summary>
        public partial class Form1 : Form
        {
            Sunisoft.IrisSkin.SkinEngine se = null;
            public Form1()
            {
                InitializeComponent();
                se = new Sunisoft.IrisSkin.SkinEngine();
                se.SkinAllForm = true;//所有窗体均应用此皮肤
                se.SkinFile = "skin/WaveColor1.ssk";
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                f2.Show();
            } 
        }
    }

    运行如下:

    中间的黑框框是LZ拖上去的DataGridView控件。

    需要注意的地方是:该第三方控件要求.NET Framework 版本最高为3.5。使用VS2010或是VS2012的博友需要更改项目的目标版本。

    下一篇博文将介绍自定义皮肤的方法,请期待。。。

  • 相关阅读:
    如何将 DataTable 转成 IEnumerable<T> ?
    CodeMonkey少儿编程第7章 函数
    CodeMonkey少儿编程第6章 for循环
    CodeMonkey少儿编程第5章 数组与索引
    CoeMonkey少儿编程第4章 变量
    CodeMonkey少儿编程第3章 times循环
    CodeMonkey少儿编程第2章 turnTo对象
    CodeMonke少儿编程第1章 step与turn
    Web高级 Webpack编译提速思路
    RPC框架
  • 原文地址:https://www.cnblogs.com/DebugLZQ/p/3021629.html
Copyright © 2011-2022 走看看