在我们平时使用的各种工具中,如QQ,迅雷,以及各种空间等,都提供了一些换肤功能,可以让我们选择各种我们喜欢的界面。本文就对VS中常用的窗口程序做一个简单的换肤,利用一个dll文件来进行实现。

 

首先我们要加载一个叫做IrisSkin2.dll的dll文件,通过“添加引用”,在应用里添加IrisSkin2.dll,就可以完成对这个dll的调用。然后在工具栏中添加一个SkinEngine的控件。可以在工具栏中添加一个选项卡,比如命名为Skin,然后右键单击,在选择项的.NETFramework组件中找到SkinEngine的控件。

 

 

 

这时候,我们就能看到在工具栏中有了一个SkinEngine的控件了。

除此之外,我们还需要一个皮肤文件,通常后缀为.ssk,或者是.skn文件。可以用两种方法来实现,一种是在bin/Debug中添加名为ssk的文件,此种方法比较简单,只需要在程序中添加如此代码就OK了。

this.skinEngine1.SkinFile =  "MSN.ssk";

文件名可以是任意存在的文件名。只要是在Debug里存在的。

另一种方法是使用MemoryStream。通过一个简单的函数来设置来实现。

private void SetSkinFile(byte[] bytes)

        {

            memoryStream=new MemoryStream(bytes);

            skinEngine1.SkinStream = memoryStream;            

        }

在使用的时候,需要调用该函数,如SetSkinFile(Properties.Resources.Wave1);使用Resources文件的前提是必须在Resource中添加相应的资源。具体方法如下:

选择Properties中的Resources,选择添加资源,将相对应的SSK资源添加进来。

整个窗口的代码如下:

using System;

using System.Windows.Forms;

using System.IO;

 

namespace 皮肤

{

    public partial class Form1 : Form

    {

        private int num = 0;

        private MemoryStream memoryStream;

 

        public Form1()

        {

            InitializeComponent();

            SetSkinFile(Properties.Resources.Wave1);            

        }

//此处实现的是通过按钮来实现不断换肤功能,主要是对bin里面的

        //几个皮肤文件做循环

        private void button1_Click(object sender, EventArgs e)

        {

            num = (num++) % 6 + 1; 

            this.skinEngine1.SkinFile =  num + ".ssk";

        }

 

         private void SetSkinFile(byte[] bytes)

        {

            memoryStream=new MemoryStream(bytes);

            skinEngine1.SkinStream = memoryStream;            

        }

    }

}

以上程序的运行效果如下:

 

 

如此一来,只要我们有相应的皮肤文件,都可以加到我们想要的窗口上,实现窗口的美化。

具体源码可以在此免费下载:http://download.csdn.net/source/2862647

posted on 2014-06-29 22:43  milantgh  阅读(1060)  评论(0编辑  收藏  举报