更換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的博友需要更改項目的目標版本。

下一篇博文將介紹自定義皮膚的方法,請期待。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM