ToB企服应用市场:ToB评测及商务社交产业平台

标题: Winform 巨好看的控件库推荐:MaterialSkin.2 [打印本页]

作者: 海哥    时间: 2023-6-28 22:08
标题: Winform 巨好看的控件库推荐:MaterialSkin.2
MaterialSkin.2 控件包是在 MaterialSkin 及基础上二次开发而来的,在原控件基础上修复了一些Bug,丰富了主题以及动画效果,效果非常好。

Preview

先贴几张演示Demo中的效果图:





......
Install

在 NuGet 中搜索 MaterialSkin 就能找到控件包,直接安装就行:

注意版本框架
工具箱可能不会显示 MaterialSkin 的控件,需要我们手动添加下:
工具箱 -> 右击:添加选项卡 -> 把 NuGet 安装包里的 DLL 文件拖到选项卡里

简单尝鲜

切换主题以及配色方案

在后台代码中添加一个只读的MaterialSkinManager变量,通过这个变量来控制主题和配色,把ReadMe.md给出的例程调整一下方便后续调整:
  1. public partial class Form1 : MaterialForm
  2. {
  3.   private readonly MaterialSkinManager materialSkinManager;   
  4.   public Form1()
  5.   {
  6.     InitializeComponent();
  7.     materialSkinManager = MaterialSkinManager.Instance;        // 初始化 MaterialSkinManager 实例
  8.     materialSkinManager.AddFormToManage(this);        // 将要应用 Material Design 的窗体添加到管理列表中
  9.     materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;        // Theme 属性用来设置整体的主题
  10.     materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE);        // ColorScheme 属性来设置配色方案
  11.   }
  12. }
复制代码
上面代码写完运行程序就会是我们配置的配色及主题:

MaterialSkinManager主要是通过Themes以及ColorScheme来控制页面的显示效果,前者控制主题,后者控制配色:
  1. private void btn_ChangeTheme_Click(object sender, EventArgs e)
  2. {
  3.     materialSkinManager.Theme = materialSkinManager.Theme == MaterialSkinManager.Themes.DARK ? MaterialSkinManager.Themes.LIGHT : MaterialSkinManager.Themes.DARK;
  4. }
复制代码
再看配色方案,在此之前我们先在页面上随便加一些控件便于显示配色效果:

更改配色方案:
  1. private int colorSchemeIndex;   // 通过更换次数,方便循环更换颜色
  2. private void btn_SwitchColor_Click(object sender, EventArgs e)
  3. {
  4.     colorSchemeIndex++;
  5.     if (colorSchemeIndex == 6)
  6.     {
  7.         colorSchemeIndex = 0;
  8.     }
  9.     SwitchColor(colorSchemeIndex);
  10. }
  11. private void SwitchColor(int colorSchemeIndex)
  12. {
  13.     switch (colorSchemeIndex)
  14.     {
  15.         case 0:
  16.             materialSkinManager.ColorScheme = new ColorScheme(
  17.                 materialSkinManager.Theme == MaterialSkinManager.Themes.DARK ? Primary.Teal500 : Primary.Indigo500,
  18.                 materialSkinManager.Theme == MaterialSkinManager.Themes.DARK ? Primary.Teal700 : Primary.Indigo700,
  19.                 materialSkinManager.Theme == MaterialSkinManager.Themes.DARK ? Primary.Teal200 : Primary.Indigo100,
  20.                 Accent.Pink200,
  21.                 TextShade.WHITE);
  22.             break;
  23.         case 1:
  24.             materialSkinManager.ColorScheme = new ColorScheme(
  25.                 Primary.Green600,
  26.                 Primary.Green700,
  27.                 Primary.Green200,
  28.                 Accent.Red100,
  29.                 TextShade.WHITE);
  30.             break;
  31.         case 2:
  32.             materialSkinManager.ColorScheme = new ColorScheme(
  33.                 Primary.BlueGrey800,
  34.                 Primary.BlueGrey900,
  35.                 Primary.BlueGrey500,
  36.                 Accent.LightBlue200,
  37.                 TextShade.WHITE);
  38.             break;
  39.         case 3:
  40.             materialSkinManager.ColorScheme = new ColorScheme(
  41.                 Primary.Red800,
  42.                 Primary.Red900,
  43.                 Primary.Red500,
  44.                 Accent.Green200,
  45.                 TextShade.WHITE);
  46.             break;
  47.         case 4:
  48.             materialSkinManager.ColorScheme = new ColorScheme(
  49.                 Primary.Yellow800,
  50.                 Primary.Yellow900,
  51.                 Primary.Yellow500,
  52.                 Accent.DeepOrange200,
  53.                 TextShade.WHITE);
  54.             break;
  55.         case 5:
  56.             materialSkinManager.ColorScheme = new ColorScheme(
  57.                 Primary.DeepOrange800,
  58.                 Primary.DeepOrange900,
  59.                 Primary.DeepOrange500,
  60.                 Accent.Yellow200,
  61.                 TextShade.WHITE);
  62.             break;
  63.         case 6:
  64.             materialSkinManager.ColorScheme = new ColorScheme(
  65.                 Primary.Lime800,
  66.                 Primary.Lime900,
  67.                 Primary.Lime500,
  68.                 Accent.Green200,
  69.                 TextShade.WHITE);
  70.             break;
  71.     }
  72.     Invalidate(); // 重绘控件
  73. }
复制代码
配色是Github上Example以及用户issue里的配色方案,大家如果要用的话,可以参考:Material Skin 指南 中文翻译文档
看看效果:

MaterialSkin实现了很丰富的动画效果,But...

默认的蓝粉配色就已经很好看了,大家如果有什么酷炫帅气的配色方案,欢迎在评论区留言交流!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4