<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,comments - 227,trackbacks - 0

    利用.net技術(shù)能夠快速開發(fā)出應(yīng)用程序,但是如果應(yīng)用微軟的那一套技術(shù),做出來的程序大多數(shù)程序員恐怕都會有一種千篇一律的感覺:按鈕還是那個按鈕(只是文字不同),文本框還是那個文本框, 下拉列表還是那個下拉列表........跟系統(tǒng)里的沒有什么兩樣,不管程序怎么樣,至少這個界面沒什么新意。

    誠然,目前也有不少第三方的控件,如Xceed Ultimate Suite、ComponentOne.Studio、Infragistics.NetAdvantage等等,使用這些控件大多需要再花一定時間去掌握這些控件的用法,而且有些做得不是很好,我曾經(jīng)見過一個商業(yè)控件里面很多是畫出來的,不能像VS.net自帶的控件那樣在IDE上靈活控制,現(xiàn)在給大家展示一個很簡單的換皮膚控件,先不說別的,讓大家看看效果:

    看到上面的界面心動了嗎?告訴大家,我用的都是VS2005的標(biāo)準(zhǔn)控件,實(shí)現(xiàn)換皮膚的功能也僅僅是數(shù)行代碼而已,也就是說以前熟悉的控件還照常使用。

    先介紹一下這套控件吧,這套控件僅有一個dll(IrisSkin2.dll)文件和一個skin文件夾,skin文件夾下共有22個子文件夾,每個子文件夾其實(shí)就是一套界面風(fēng)格,也就是說我們可以使用22種不同風(fēng)格。

    實(shí)現(xiàn)給界面換皮膚有兩種做法:(一)拷貝法,即使將界面資源夾下所有的文件拷貝到.exe文件所在的位置,然后在程序種通過skinEngine1.SkinFile=fileName(fileName是皮膚文件.ssk文件的位置)來設(shè)定界面皮膚,這種做法通常是我們需要在Debug文件夾和Release文件各保存一套皮膚文件,發(fā)布程序的時候也需要附帶這些文件。(二)嵌入資源法,本文就是采用這種辦法實(shí)現(xiàn)的,這樣做的好處是發(fā)布程序時(不管是Debug版本或Release版本)時vs自動將皮膚文件編譯進(jìn)exe文件中,減少程序發(fā)布時文件的個數(shù),而且也不用管程序與皮膚文件的相對位置。

    首先打開VS工具箱,添加皮膚控件組件,如下圖:

    然后在出現(xiàn)的“選擇工具箱項(xiàng)”中點(diǎn)擊“瀏覽”按鈕,然后找到IrisSkin2.dll文件,然后“確定”,關(guān)閉對話窗口之后,皮膚控件組件就會出現(xiàn)在你的工具箱上了(具體出現(xiàn)在哪個分組跟你添加時添加哪個組有關(guān)),如下圖:

    (我不小心加到打印分組去了,大家不要罵我:P)

    好了,現(xiàn)在可以編寫程序測試了,做一個簡單的窗體吧,界面上的控件如上圖所示,然后將皮膚組件拖拽到界面上,之后需要把程序所需要的皮膚資源文件添加進(jìn)來,這里我是采用添加資源的辦法。

    步驟如下:
    (一)在WinForm工程上右鍵單擊“屬性”,在出現(xiàn)的界面中點(diǎn)“資源”選項(xiàng)卡,把所需的皮膚資源文件添加進(jìn)來(通過“添加現(xiàn)有文件”命令添加皮膚文件),如下圖:

    注意如果該皮膚文件夾下除了*.ssk文件之外,還包含有其它圖片文件,建議將它們也作為資源添加到項(xiàng)目中。添加完成之后,我們就可以在代碼中通過Properties.Resources.文件名來獲取這些文件的內(nèi)容了,通過這個方法返回的是文件內(nèi)容的二進(jìn)制數(shù)據(jù)(byte[]),而skinEngine1.SkinStream需要的是一個Stream對象,通過msdn我們可以以這個二進(jìn)制數(shù)據(jù)構(gòu)建一個Stream對象(new MemoryStream(byte[] bytes)),然后賦值給皮膚組件的SkinStream屬性,如果需要換皮膚,重新構(gòu)建一個皮膚資源文件的Stream對象,然后重新賦值就行了。

    界面控件布局代碼很簡單,就不粘貼了,主要把后臺代碼放在這里吧(其實(shí)也很簡單,不過需要注意,因?yàn)槭褂昧薓emoryStream對象,就需要在程序引用程序集部分添加對IO方面的引用:using System.IO;)

    代碼如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.IO;
    using System.Windows.Forms;

    namespace SkinForm
    {
        
    /// <summary>
        
    /// 說明:這是一個簡單的WinForm應(yīng)用程序,用來展示如何使用換皮膚控件來實(shí)現(xiàn)我們需要的漂亮界面,代碼很簡單。
        
    /// 作者:周公
        
    /// 時間:2008-1-8
        
    /// 首發(fā)地址:http://blog.csdn.net/zhoufoxcn
        
    /// </summary>
        public partial class MainForm : Form
        {
            
    private MemoryStream memoryStream;
            
    public MainForm()
            {
                InitializeComponent();
                SetSkinFile(Properties.Resources.MacOS);
            }

            
    private void btnOK_Click(object sender, EventArgs e)
            {
                
    if (rbMacOS.Checked)
                {
                    SetSkinFile(Properties.Resources.MacOS);
                }
                
    else if (rbMP10.Checked)
                {
                    SetSkinFile(Properties.Resources.MP101);
                }
                
    else if (rbMSN.Checked)
                {
                    SetSkinFile(Properties.Resources.MSN1);
                }
                
    else if (rbPage.Checked)
                {
                    SetSkinFile(Properties.Resources.Page);
                }
                
    else if (rbRealOne.Checked)
                {
                    SetSkinFile(Properties.Resources.RealOne1);
                }
                
    else if (rbVista1.Checked)
                {
                    SetSkinFile(Properties.Resources.vista1_green1);
                }
                
    else if (rbVista2.Checked)
                {
                    SetSkinFile(Properties.Resources.Vista2_color11);
                }
                
    else
                {
                    SetSkinFile(Properties.Resources.XPBlue1);
                }
            }

            
    private void SetSkinFile(byte[] bytes)
            {
                memoryStream
    =new MemoryStream(bytes);
                
    //設(shè)置皮膚可以通過兩種方式,一種是指定皮膚文件的位置,
                
    //如skinEngine1.SkinFile=fileName(fileName是皮膚文件.ssk文件的位置)
                
    //一種是指定皮膚文件的文件流,如本程序所示
                skinEngine1.SkinStream = memoryStream;
                
            }
        }
    }

    程序界面效果如上面所示。

    本文提到的皮膚組件可以到:http://download.csdn.net/user/zhoufoxcn/下載。

    posted on 2008-01-09 13:08 SIMONE 閱讀(1088) 評論(0)  編輯  收藏 所屬分類: .NET
    主站蜘蛛池模板: 亚洲精品国产日韩无码AV永久免费网 | 亚洲人成电影在线观看网| 亚洲国产精品无码久久久| 精品国产亚洲一区二区三区在线观看| 免费看无码特级毛片| 日韩中文字幕在线免费观看| 亚洲av无码潮喷在线观看| 美女18一级毛片免费看| 黄网站色在线视频免费观看| 久久国产成人亚洲精品影院| 伊人久久亚洲综合影院首页| 久操视频在线免费观看| 亚洲AV日韩精品一区二区三区| 亚洲另类视频在线观看| 欧洲乱码伦视频免费| 久久亚洲AV成人无码国产| eeuss在线兵区免费观看| 日韩电影免费在线观看视频| 亚洲AV女人18毛片水真多| 国产免费看JIZZ视频| 亚洲成AV人片一区二区密柚| 草久免费在线观看网站| 全免费a级毛片免费**视频| 久久久久亚洲AV无码网站| 成人免费的性色视频| 亚洲日韩精品A∨片无码加勒比| 亚洲一区二区三区免费观看| 亚洲欧洲美洲无码精品VA| 国产成人 亚洲欧洲| 自拍偷自拍亚洲精品第1页| 亚洲AV无码一区二区三区性色| 亚洲高清免费视频| 久久精品国产亚洲av瑜伽| 亚洲午夜精品第一区二区8050| 粉色视频在线观看www免费| 亚洲中文字幕在线第六区| 18禁成人网站免费观看| 亚洲日韩乱码久久久久久| 日本免费中文字幕在线看| 两性色午夜视频免费播放| 亚洲成a人片在线观看日本|