예제 #1
0
		/// <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;

		}
예제 #2
0
		/// <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);
		}