using MGdu.WinFormUI; using Newtonsoft.Json.Linq; using ryCommon; using ryControls.Skin; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace RySkins { public class SkinSetting { /// /// MGdu窗体的默认皮肤 /// public static ThemeFormBase FormSkin { get; set; } = new ThemeForm(); /// /// Tab标签鼠标移上时的颜色开始色 /// public static Color TabMoveColorStart { get; set; } /// /// Tab标签鼠标移上时的颜色结束色 /// public static Color TabMoveColorEnd { get; set; } /// /// 整个Tab标签背景颜色 /// public static Color AllTabBackColor { get; set; } /// /// 图标颜色 /// public static Color IconColor { get; set; } public static bool DrawTabBorder { get; set; } = true; /// /// 最小化按钮字体色 /// public static Color minForeColor { get; set; } = Color.Gray; /// /// 最小化按钮激活背景色 /// public static Color minBackColorHover { get; set; } = Color.FromArgb(67, 139, 221); /// /// 最小化按钮按下背景色 /// public static Color minBackColorPressed { get; set; } = Color.FromArgb(50, 125, 210); /// /// 最大化按钮字体色 /// public static Color maxForeColor { get; set; } = Color.Gray; /// /// 最大化按钮激活背景色 /// public static Color maxBackColorHover { get; set; } = Color.FromArgb(67, 139, 221); /// /// 最大化按钮按下背景色 /// public static Color maxBackColorPressed { get; set; } = Color.FromArgb(50, 125, 210); /// /// 关闭按钮字体色 /// public static Color closeForeColor { get; set; } = Color.Gray; /// /// 关闭按钮激活背景色 /// public static Color closeBackColorHover { get; set; } = Color.FromArgb(217, 71, 71); /// /// 关闭按钮按下背景色 /// public static Color closeBackColorPressed { get; set; } = Color.FromArgb(188, 52, 52); public static Color SvgColor{ get; set; } = Color.FromArgb(188, 52, 52); /// /// 工具栏选中背景颜色 /// public static Color ToolBarSelectedColor { get; set; } = Color.SkyBlue; public static void SaveCloseBtnSkin() { if (FormSkin.CloseBoxColor == null) { FormSkin.CloseBoxColor = new ButtonColorTable(); } FormSkin.CloseBoxColor.ForeColorNormal = FormSkin.CloseBoxColor.ForeColorHover = FormSkin.CloseBoxColor.ForeColorPressed = closeForeColor; FormSkin.CloseBoxColor.BackColorHover = closeBackColorHover; FormSkin.CloseBoxColor.BackColorPressed = closeBackColorPressed; } public static void SaveMinBtnSkin() { if (FormSkin.MinBoxColor == null) { FormSkin.MinBoxColor = new ButtonColorTable(); } //FormSkin.MinBoxColor = new ButtonColorTable(); FormSkin.MinBoxColor.ForeColorNormal = FormSkin.MinBoxColor.ForeColorHover = FormSkin.MinBoxColor.ForeColorPressed = minForeColor; FormSkin.MinBoxColor.BackColorHover = minBackColorHover; FormSkin.MinBoxColor.BackColorPressed = minBackColorPressed; } public static void SaveMaxBtnSkin() { if (FormSkin.MaxBoxColor == null) { FormSkin.MaxBoxColor = new ButtonColorTable(); } //FormSkin.MaxBoxColor = new ButtonColorTable(); FormSkin.MaxBoxColor.ForeColorNormal = FormSkin.MaxBoxColor.ForeColorHover = FormSkin.MaxBoxColor.ForeColorPressed = maxForeColor; FormSkin.MaxBoxColor.BackColorHover = maxBackColorHover; FormSkin.MaxBoxColor.BackColorPressed = maxBackColorPressed; } /// /// 加载皮肤 /// /// public static void LoadSkin(string path) { if (!System.IO.File.Exists(path)) { SaveMinBtnSkin(); SaveMaxBtnSkin(); SaveCloseBtnSkin(); return; } var skin = FormSkin; var skin_json= JObject.Parse(RyFiles.ReadAllText(path)); var skin_item = skin_json["skin"]; if (skin_item == null) { return; } JObject jo = JObject.Parse(skin_item.ToString()); skin.CaptionBackColorTop = GetColor("CaptionBackColorTop", skin.CaptionBackColorTop); skin.CaptionBackColorBottom = GetColor("CaptionBackColorBottom", skin.CaptionBackColorBottom); skin.CaptionTextColor = GetColor("CaptionTextColor", skin.CaptionTextColor); skin.IconLeftMargin = GetInt("IconLeftMargin", skin.IconLeftMargin); IconColor = GetColor("IconColor", IconColor); var icon_size = GetInt("IconSize", skin.IconSize.Width); skin.IconSize = new Size(icon_size, icon_size); skin.CaptionHeight = GetInt("CaptionHeight", skin.CaptionHeight); minForeColor = GetColor("minForeColor", minForeColor); minBackColorHover = GetColor("minBackColorHover", minBackColorHover); minBackColorPressed = GetColor("minBackColorPressed", minBackColorPressed); maxForeColor = GetColor("maxForeColor", maxForeColor); maxBackColorHover = GetColor("maxBackColorHover", maxBackColorHover); maxBackColorPressed = GetColor("maxBackColorPressed", maxBackColorPressed); closeForeColor = GetColor("closeForeColor", closeForeColor); closeBackColorHover = GetColor("closeBackColorHover", closeBackColorHover); closeBackColorPressed = GetColor("closeBackColorPressed", closeBackColorPressed); SaveMinBtnSkin(); SaveMaxBtnSkin(); SaveCloseBtnSkin(); skin.BorderWidth = GetInt("BorderWidth", skin.BorderWidth); skin.FormBackColor = GetColor("FormBackColor", skin.FormBackColor); skin.FormBorderOutterColor = GetColor("FormBorderOutterColor", skin.FormBorderOutterColor); skin.FormBorderInnerColor = GetColor("FormBorderInnerColor", skin.FormBorderInnerColor); skin.FormBorderInmostColor = GetColor("FormBorderInmostColor", skin.FormBorderInmostColor); skin.ShowShadow = GetBool("ShowShadow", skin.ShowShadow); skin.ShadowWidth = GetInt("ShadowWidth", skin.ShadowWidth); skin.ShadowColor = GetColor("ShadowColor", skin.ShadowColor); skin.ShadowAValueDark = GetInt("ShadowAValueDark", skin.ShadowAValueDark); skin.ShadowAValueLight = GetInt("ShadowAValueLight", skin.ShadowAValueLight); skin.Mdi_TabActiveBackColorTop = GetColor("TabActiveBackColorTop", skin.Mdi_TabActiveBackColorTop); skin.Mdi_TabActiveBackColorBottom = GetColor("TabActiveBackColorBottom", skin.Mdi_TabActiveBackColorBottom); skin.Mdi_TabDeactiveBackColorTop = GetColor("TabDeactiveBackColorTop", skin.Mdi_TabDeactiveBackColorTop); skin.Mdi_TabDeactiveBackColorBottom = GetColor("TabDeactiveBackColorBottom", skin.Mdi_TabDeactiveBackColorBottom); skin.Mdi_TabHeight = GetInt("TabHeight", 26); skin.Mdi_TabAndTabSpace = GetInt("TabAndTabSpace", 2); skin.TabRadius = GetInt("TabRadius", 8); DrawTabBorder = GetBool("DrawTabBorder", DrawTabBorder); TabMoveColorStart = GetColor("TabMoveColorStart", SkinSetting.TabMoveColorStart); TabMoveColorEnd = GetColor("TabMoveColorEnd", SkinSetting.TabMoveColorEnd); AllTabBackColor = GetColor("AllTabBackColor", SystemColors.Control); SkinCommon.ButtonSkin.BackColor = GetColor("ButtonDefColor", SkinCommon.ButtonSkin.BackColor); SkinCommon.ButtonSkin.ForeColor = GetColor("ButtonDefForeColor", SkinCommon.ButtonSkin.ForeColor); SkinCommon.ButtonSkin.ColorGradient= GetBool("ButtonColorGradient", SkinCommon.ButtonSkin.ColorGradient); SvgColor = GetColor("SvgColor", SvgColor); ToolBarSelectedColor = GetColor("ToolBarSelectedColor", ToolBarSelectedColor); string GetJItem(string id) { var item = jo[id]; if (item == null) return ""; return item.ToString(); } Color GetColor(string id, Color defColor) { try { var item = GetJItem(id); if (item.Length == 0) { return defColor; } return System.Drawing.ColorTranslator.FromHtml(item); } catch { return defColor; } } int GetInt(string id, int defValue) { try { var item = GetJItem(id); if (item.Length == 0) { return defValue; } return item.ToInt(); } catch { return defValue; } } bool GetBool(string id, bool defValue) { try { var item = GetJItem(id); if (item.Length == 0) { return defValue; } return item.ToBool(); } catch { return defValue; } } } } }