/// <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> /// <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); }