RaUI/Source/SkinPreview/SkinForms/SkinSetting.cs
zilinsoft 3262955f2f ### 2023-11-07更新
------
#### RaUIV4    V4.0.2311.0701
- *.[全新]整合了MyDb、ryControls、MyDb_MySQL等dll文件到RaUI一个项目。
- *.[新增]新增ApkOp类,可以轻松获取APK信息。
- *.[新增]新增JsonExt扩展类,让Json操作更简单。
- *.[新增]新增WebP类,可以支持webp格式的图片。
- *.[改进]ryQuickSQL中的AddField方法改为自动替换已存在的同名值。
- *.[修复]ryQuickSQL中的AddFieldCalc方法无法正常计算的BUG。
2023-11-07 16:37:53 +08:00

181 lines
8.5 KiB
C#

using MGdu.WinFormUI;
using Newtonsoft.Json.Linq;
using ryCommon;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace RySkins
{
public class SkinSetting
{
/// <summary>
/// MGdu窗体的默认皮肤
/// </summary>
public static ThemeFormBase FormSkin { get; set; } = new ThemeForm();
/// <summary>
/// Tab标签鼠标移上时的颜色开始色
/// </summary>
public static Color TabMoveColorStart { get; set; }
/// <summary>
/// Tab标签鼠标移上时的颜色结束色
/// </summary>
public static Color TabMoveColorEnd { get; set; }
/// <summary>
/// 最小化按钮字体色
/// </summary>
public static Color minForeColor { get; set; } = Color.Gray;
/// <summary>
/// 最小化按钮激活背景色
/// </summary>
public static Color minBackColorHover { get; set; } = Color.FromArgb(67, 139, 221);
/// <summary>
/// 最小化按钮按下背景色
/// </summary>
public static Color minBackColorPressed { get; set; } = Color.FromArgb(50, 125, 210);
/// <summary>
/// 最大化按钮字体色
/// </summary>
public static Color maxForeColor { get; set; } = Color.Gray;
/// <summary>
/// 最大化按钮激活背景色
/// </summary>
public static Color maxBackColorHover { get; set; } = Color.FromArgb(67, 139, 221);
/// <summary>
/// 最大化按钮按下背景色
/// </summary>
public static Color maxBackColorPressed { get; set; } = Color.FromArgb(50, 125, 210);
/// <summary>
/// 关闭按钮字体色
/// </summary>
public static Color closeForeColor { get; set; } = Color.Gray;
/// <summary>
/// 关闭按钮激活背景色
/// </summary>
public static Color closeBackColorHover { get; set; } = Color.FromArgb(217, 71, 71);
/// <summary>
/// 关闭按钮按下背景色
/// </summary>
public static Color closeBackColorPressed { get; set; } = Color.FromArgb(188, 52, 52);
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;
}
/// <summary>
/// 加载皮肤
/// </summary>
/// <param name="path"></param>
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);
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);
SkinSetting.TabMoveColorStart = GetColor("TabMoveColorStart", SkinSetting.TabMoveColorStart);
SkinSetting.TabMoveColorEnd = GetColor("TabMoveColorEnd", SkinSetting.TabMoveColorEnd);
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; }
}
}
}
}