Winform窗体换肤(IrisSkin)

SkinEngine组件封装

using Sunisoft.IrisSkin;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IrisSkinApp
{
    //NuGet添加HiNetCloud.IrisSkin4
    //封装后方便通过皮肤枚举切换皮肤,也方便对SkinEngine属性的封装扩展
    //记得在执行文件目录下添加皮肤文件\Skins\*.ssk(百度下载)
    //需要根据皮肤文件名修改枚举SkinEnum
    //修改SkinEngineHelper.属性  实现更多功能
    public class SkinEngineHelper : SkinEngine
    {
        private static readonly List<string> Skins = new List<string>();
        public SkinEngineHelper()
        {
            try
            {
                var filesList = Directory.GetFiles(Environment.CurrentDirectory + @"\Skins\", "*.ssk");
                filesList.ToList().ForEach(x =>
                {
                    Skins.Add(x);//加载所有皮肤列表路径
                });
            }
            catch (Exception)
            {
                //Skins.Count = 0;
            }
        }
        public void SetSkinFile(SkinEnum skinEnum)
        {
            var skinPath = $@"{Environment.CurrentDirectory}\Skins\{skinEnum}.ssk";
            if (Skins.Contains(skinPath) && skinEnum.ToString() != SkinEnum.NotSkin.ToString())
            {
                base.SkinFile = skinPath;
                base.Active = true;
            }
            else
            {
                base.Active = false;
            }
        }
        public void WriteSkinsListToTxt()
        {
            //将皮肤文件名写到txt文件方便复制写枚举SkinEnum
            string path = Environment.CurrentDirectory + @"\Skins\SkinsList.txt";
            using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))
            {
                Skins.ForEach(x =>
                {
                    sw.WriteLine(Path.GetFileNameWithoutExtension(x));
                });
            }
        }

    }
    public enum SkinEnum
    {
        NotSkin = 0,//不使用IrisSkin皮肤
        Calmness = 1,
        CalmnessColor1 = 2,
        CalmnessColor2 = 3,
        DeepCyan = 4,
        DeepGreen = 5,
        DeepOrange = 6,
        DiamondBlue = 7,
        DiamondGreen = 8,
        DiamondOlive = 9,
        DiamondPurple = 10,
        DiamondRed = 11,
        Eighteen = 12,
        EighteenColor1 = 13,
        EighteenColor2 = 14,
        Emerald = 15,
        EmeraldColor1 = 16,
        EmeraldColor2 = 17,
        EmeraldColor3 = 18,
        GlassBrown = 19,
        GlassGreen = 20,
        GlassOrange = 21,
        Longhorn = 22,
        MacOS = 23,
        Midsummer = 24,
        MidsummerColor1 = 25,
        MidsummerColor2 = 26,
        MidsummerColor3 = 27,
        mp10 = 28,
        mp10green = 29,
        mp10maroon = 30,
        mp10mulberry = 31,
        mp10pink = 32,
        mp10purple = 33,
        MSN = 34,
        office2007 = 35,
        OneBlue = 36,
        OneCyan = 37,
        OneGreen = 38,
        OneOrange = 39,
        Page = 40,
        PageColor1 = 41,
        PageColor2 = 42,
        RealOne = 43,
        Silver = 44,
        SilverColor1 = 45,
        SilverColor2 = 46,
        SportsBlack = 47,
        SportsBlue = 48,
        SportsCyan = 49,
        SportsGreen = 50,
        SportsOrange = 51,
        SteelBlack = 52,
        SteelBlue = 53,
        vista1 = 54,
        vista1_green = 55,
        Vista2_color1 = 56,
        Vista2_color2 = 57,
        Vista2_color3 = 58,
        Vista2_color4 = 59,
        Vista2_color5 = 60,
        Vista2_color6 = 61,
        Vista2_color7 = 62,
        Warm = 63,
        WarmColor1 = 64,
        WarmColor2 = 65,
        WarmColor3 = 66,
        Wave = 67,
        WaveColor1 = 68,
        WaveColor2 = 69,
        XPBlue = 70,
        XPGreen = 71,
        XPOrange = 72,
        XPSilver = 73,
    }
}

测试

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace IrisSkinApp
{
    public partial class Form1 : Form
    {
        SkinEngineHelper skinEngineHelper = new SkinEngineHelper();
        public Form1()
        {
            InitializeComponent();
            skinEngineHelper.SetSkinFile(SkinEnum.Calmness);
            skinEngineHelper.DisableTag = 1;//排除Tag=1的控件不自动添加皮肤
            button1.Tag = 1;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (SkinEnum s in Enum.GetValues(typeof(SkinEnum)))//遍历枚举
            {
                comboBox1.Items.Add(s);
            }  
        }


        private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            skinEngineHelper.SetSkinFile((SkinEnum)Enum.Parse(typeof(SkinEnum), comboBox1.Text));//字符串转枚举
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Test");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            new Form2().ShowDialog();
        }

        private void button3_Click(object sender, EventArgs e)
        {

        }
    }
}

测试代码链接

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值