namespace Yw.WpfUI.Hydro { /// /// 颜色拓展 /// internal static class ColorExtensions { /// /// ToMediaColor /// public static Color ToMediaColor(this string htmlColor) { if (string.IsNullOrEmpty(htmlColor)) { return default; } // 处理命名颜色 if (!htmlColor.StartsWith("#")) { var color = (Color)ColorConverter.ConvertFromString(htmlColor); return color; } // 处理#RGB或#ARGB格式 htmlColor = htmlColor.TrimStart('#'); if (htmlColor.Length == 3) // #RGB → #RRGGBB { htmlColor = $"{htmlColor[0]}{htmlColor[0]}{htmlColor[1]}{htmlColor[1]}{htmlColor[2]}{htmlColor[2]}"; } else if (htmlColor.Length == 4) // #ARGB → #AARRGGBB { htmlColor = $"{htmlColor[0]}{htmlColor[0]}{htmlColor[1]}{htmlColor[1]}{htmlColor[2]}{htmlColor[2]}{htmlColor[3]}{htmlColor[3]}"; } if (htmlColor.Length != 6 && htmlColor.Length != 8) { return default; } var a = htmlColor.Length == 8 ? Convert.ToByte(htmlColor.Substring(0, 2), 16) : (byte)255; var r = Convert.ToByte(htmlColor.Substring(htmlColor.Length - 6, 2), 16); var g = Convert.ToByte(htmlColor.Substring(htmlColor.Length - 4, 2), 16); var b = Convert.ToByte(htmlColor.Substring(htmlColor.Length - 2, 2), 16); return Color.FromArgb(a, r, g, b); } } }