/// <summary> /// Returns the color for a 3scale color formatting. /// </summary> /// <param name="value">The value.</param> /// <param name="min">The minimum.</param> /// <param name="max">The maximum.</param> /// <param name="par">The 3color parameters.</param> /// <returns></returns> public static Color ConvertThreeRange(double value, double min, double max, ThreeColoursParams par) { HSVColour A = ColourToHSV(par.MinimumColour); HSVColour B = ColourToHSV(par.MaximumColour); HSVColour C = ColourToHSV(par.MediumColour); //Ratio double percent; if (min == max) { percent = 1.0; } else { //Min can be different from 0 percent = (value - min) / (max - min); } if (percent == 0.5) { return(par.MediumColour); } else if (percent <= 0.5) { return(Color.FromArgb((int)Math.Round(par.MinimumColour.A + (par.MediumColour.A - par.MinimumColour.A) * percent), (int)Math.Round(par.MinimumColour.R + (par.MediumColour.R - par.MinimumColour.R) * percent), (int)Math.Round(par.MinimumColour.G + (par.MediumColour.G - par.MinimumColour.G) * percent), (int)Math.Round(par.MinimumColour.B + (par.MediumColour.B - par.MinimumColour.B) * percent))); } else { return(Color.FromArgb((int)Math.Round(par.MediumColour.A + (par.MaximumColour.A - par.MediumColour.A) * percent), (int)Math.Round(par.MediumColour.R + (par.MaximumColour.R - par.MediumColour.R) * percent), (int)Math.Round(par.MediumColour.G + (par.MaximumColour.G - par.MediumColour.G) * percent), (int)Math.Round(par.MediumColour.B + (par.MaximumColour.B - par.MediumColour.B) * percent))); } }
public void Test_HSVColour_Construct() { var hsv = new HSVColour(); hsv.H.Should().Be(0); hsv.S.Should().Be(0); hsv.V.Should().Be(0); hsv.A.Should().Be(0); // Blegh!! hsv = new HSVColour(11, 0.22, 0.33); hsv.H.Should().Be((ColourPrimitive)11); hsv.S.Should().Be((ColourPrimitive)0.22); hsv.V.Should().Be((ColourPrimitive)0.33); hsv.A.Should().Be(1); hsv = new HSVColour(11, 0.22, 0.33, 0.44); hsv.H.Should().Be((ColourPrimitive)11); hsv.S.Should().Be((ColourPrimitive)0.22); hsv.V.Should().Be((ColourPrimitive)0.33); hsv.A.Should().Be((ColourPrimitive)0.44); }
public static HSVColourAssertions Should(this HSVColour value) => new HSVColourAssertions(value);