/// <summary> /// 反色 /// </summary> /// <param name="hsvColor">原色</param> /// <returns>反色</returns> public static HSLColor Reverse(HSLColor color) { Color RGB = color.ToRGB(); return new HSLColor(Color.FromArgb(RGB.A, (byte)(255 - RGB.R), (byte)(255 - RGB.G), (byte)(255 - RGB.B))); //return new HSLColor(hsvColor.Alpha, hsvColor.Hue + 180, 1 - hsvColor.Saturation, 1 - hsvColor.Lightness); }
/// <summary> /// 颜色修正 /// </summary> /// <param name="color1">待修正色</param> /// <param name="color2">参照色</param> /// <returns>修正色</returns> public static HSLColor Revise(HSLColor color1, HSLColor color2) { HSLColor newcolor = new HSLColor(color1.ToRGB()); while (IsTooBright(newcolor) || !IsTooMuchDiff(newcolor, color2) && !IsTooDark(newcolor) && newcolor.Lightness > 0) newcolor = ReviseDarker(newcolor); if (!IsTooDark(newcolor)) return newcolor; newcolor = ReviseBrighter(color1); while (IsTooDark(newcolor) || !IsTooMuchDiff(newcolor, color2) && !IsTooBright(newcolor) && newcolor.Lightness < 1) newcolor = ReviseBrighter(newcolor); if (!IsTooBright(newcolor)) return newcolor; if (IsTooBright(color1)) return ReviseVeryBright(color1); if (IsTooDark(color1)) return ReviseVeryDark(color1); return color1; }
/// <summary> /// 由窗口背景转换为桌面歌词前景 /// </summary> public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is SolidColorBrush) { HSLColor color = new HSLColor(((SolidColorBrush)value).Color); color.Alpha = 1.0; if (color.Lightness < 0.7) color.Lightness = 0.7; SolidColorBrush brush = new SolidColorBrush(color.ToRGB()); if (brush.CanFreeze) brush.Freeze(); return brush; } return value; }