private static void SetColor(ElementStylesBase ElementStylesBase, SolidColorBrush _1, string keyname) { //var _color1 = HexToBrush.ToColor("#409EFF"); //var _color2 = HexToBrush.ToColor("#D9ECFF"); //var _color3 = HexToBrush.ToColor("#ECF5FF"); //var _color4 = HexToBrush.ToColor("#66B1FF"); //var _color5 = HexToBrush.ToColor("#C6E2FF"); //HlsColor hsv1 = AyColorHelper.ConvertRgbToHsl(_color1); //HlsColor hsv2 = AyColorHelper.ConvertRgbToHsl(_color2); //HlsColor hsv3 = AyColorHelper.ConvertRgbToHsl(_color3); //HlsColor hsv4 = AyColorHelper.ConvertRgbToHsl(_color4); //HlsColor hsv5 = AyColorHelper.ConvertRgbToHsl(_color5); //Console.WriteLine((hsv2.H - hsv1.H).ToString() + "\t" + (hsv2.S - hsv1.S).ToString() + "\t" + (hsv2.L - hsv1.L).ToString()); //Console.WriteLine((hsv3.H - hsv1.H).ToString() + "\t" + (hsv3.S - hsv1.S).ToString() + "\t" + (hsv3.L - hsv1.L).ToString()); //Console.WriteLine((hsv4.H - hsv1.H).ToString() + "\t" + (hsv4.S - hsv1.S).ToString() + "\t" + (hsv4.L - hsv1.L).ToString()); //Console.WriteLine((hsv5.H - hsv1.H).ToString() + "\t" + (hsv5.S - hsv1.S).ToString() + "\t" + (hsv5.L - hsv1.L).ToString()); HlsColor hsl = AyColorHelper.ConvertRgbToHsl(_1.Color); var _a2 = hsl.H - 0.471204188481693; if (_a2 < 0) { _a2 = 0; } var _a3 = hsl.L + 0.3; if (_a3 > 1) { _a3 = 1; } HlsColor h = new HlsColor(); h.A = hsl.A; h.H = _a2; h.L = _a3; h.S = hsl.S; Color l1Color = AyColorHelper.ConvertHslToRgb(h); var _a4 = hsl.H + 1.10774317993938; if (_a4 > 360) { _a4 = 360; } var _a5 = hsl.L + 0.337254901960784; if (_a5 > 1) { var _122 = _a5 - 1 + 0.03; _a5 = _a5 - _122; } HlsColor h2 = new HlsColor(); h2.A = hsl.A; h2.H = _a4; h2.L = _a5; h2.S = hsl.S; Color l2Color = AyColorHelper.ConvertHslToRgb(h2); ElementStylesBase.EnsureResource(keyname + "1", new SolidColorBrush(l1Color)); ElementStylesBase.EnsureResource(keyname + "2", new SolidColorBrush(l2Color)); var _a6 = hsl.H + 0.117031105635988; if (_a6 > 360) { _a6 = 360; } var _a7 = hsl.L + 0.0745098039215686; if (_a7 > 1) { _a7 = 1; } HlsColor h3 = new HlsColor(); h3.A = hsl.A; h3.H = _a6; h3.L = _a7; h3.S = hsl.S; Color l3Color = AyColorHelper.ConvertHslToRgb(h3); ElementStylesBase.EnsureResource(keyname + "3", new SolidColorBrush(l3Color)); var _a8 = hsl.H + 0.226470230122999; if (_a8 > 360) { _a8 = 360; } var _a9 = hsl.S - 0.225225225225225; if (_a9 < 0) { _a9 = 0; } var _a10 = hsl.L - 0.0607843137254902; if (_a10 < 0) { _a10 = 0; } HlsColor h4 = new HlsColor(); h4.A = hsl.A; h4.H = _a8; h4.L = _a10; h4.S = _a9; Color l4Color = AyColorHelper.ConvertHslToRgb(h4); ElementStylesBase.EnsureResource(keyname + "4", new SolidColorBrush(l4Color)); //边框色 var _a11 = hsl.H + 0.0551116009920349; if (_a11 > 360) { _a11 = 360; } var _a12 = hsl.L + 0.262745098039216; if (_a12 > 1) { _a12 = 1; } HlsColor h5 = new HlsColor(); h5.A = hsl.A; h5.H = _a11; h5.L = _a12; h5.S = hsl.S; Color l5Color = AyColorHelper.ConvertHslToRgb(h5); ElementStylesBase.EnsureResource(keyname + "5", new SolidColorBrush(l5Color)); //Console.WriteLine("<" + keyname + "1" + " value=\"" + l1Color.ToString() + "\" Des=\"自动计算\"/>"); //Console.WriteLine("<" + keyname + "2" + " value=\"" + l2Color.ToString() + "\" Des=\"自动计算\"/>"); //Console.WriteLine("<" + keyname + "3" + " value=\"" + l3Color.ToString() + "\" Des=\"自动计算\"/>"); //Console.WriteLine("<" + keyname + "4" + " value=\"" + l4Color.ToString() + "\" Des=\"自动计算\"/>"); //Console.WriteLine("<" + keyname + "5" + " value=\"" + l5Color.ToString() + "\" Des=\"自动计算\"/>"); ElementStylesBase.EnsureResource(keyname + "1" + ".color", l1Color); ElementStylesBase.EnsureResource(keyname + "2" + ".color", l2Color); ElementStylesBase.EnsureResource(keyname + "3" + ".color", l3Color); ElementStylesBase.EnsureResource(keyname + "4" + ".color", l4Color); ElementStylesBase.EnsureResource(keyname + "5" + ".color", l5Color); }
private void PrepareStyles(List <Type> typeList, Brush accentBrush, ResourceDictionary parent) { var templateDirectory = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); string absolutePath = System.IO.Path.Combine(templateDirectory, "ay.Wpf.Theme.Element.ThemeConfig.Default.xml"); XmlDocument doc = new XmlDocument(); doc.Load(absolutePath); XmlNode node = doc.SelectSingleNode("Root"); XmlNodeList childs = node.ChildNodes; foreach (Type type in typeList) { ElementStylesBase ElementStylesBase = Activator.CreateInstance(type, ColorMode) as ElementStylesBase; if (ElementStylesBase.MergedDatas.Count > 0) { PrepareStyles(ElementStylesBase.MergedDatas, accentBrush, ElementStylesBase); } foreach (XmlNode ass in childs) { var keyvaluedesc = ass.Attributes["Des"].Value; if (keyvaluedesc == "自动计算") { continue; } var keyname = ass.Name; var keyvalue = ass.Attributes["value"].Value; var _1 = HexToBrush.FromHex(keyvalue) as SolidColorBrush; ElementStylesBase.EnsureResource(keyname, _1); //添加color ElementStylesBase.EnsureResource(keyname + ".color", _1.Color); if (keyname == "colorprimary") { SetColor(ElementStylesBase, _1, "colorprimary"); } else if (keyname == "colorsuccess") { SetColor(ElementStylesBase, _1, "colorsuccess"); } else if (keyname == "colorwarning") { SetColor(ElementStylesBase, _1, "colorwarning"); } else if (keyname == "colordanger") { SetColor(ElementStylesBase, _1, "colordanger"); } else if (keyname == "colorinfo") { SetColor(ElementStylesBase, _1, "colorinfo"); } } ElementStylesBase.Initialize(); if (parent != null) { parent.MergedDictionaries.Add(ElementStylesBase); } } }