/// <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)));
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
 public static HSVColourAssertions Should(this HSVColour value)
 => new HSVColourAssertions(value);