Esempio n. 1
0
        private void CalculateColorSpace()
        {
            var referenceColor = Color.FromArgb(0, 0, 0);
            var lowColor       = Color.FromArgb(255, 255, 255);
            var highColor      = Color.FromArgb(0, 0, 0);
            var lowDistance    = ColorUtility.Distance(lowColor, referenceColor);
            var highDistance   = ColorUtility.Distance(highColor, referenceColor);

            MinAlpha = 255;
            MaxAlpha = 0;

            foreach (var color in _colors)
            {
                var distance = ColorUtility.Distance(color, referenceColor);
                if (distance < lowDistance)
                {
                    lowColor    = color;
                    lowDistance = distance;
                }
                if (distance > highDistance)
                {
                    highColor    = color;
                    highDistance = distance;
                }

                if (color.A < MinAlpha)
                {
                    MinAlpha = color.A;
                }
                if (color.A > MaxAlpha)
                {
                    MaxAlpha = color.A;
                }
            }

            // Calculate min and max colors from 16-bit colors because their
            // order might change if the comparison was made with 32-bit colors.

            var lowColor16  = ColorUtility.To16Bit(lowColor);
            var highColor16 = ColorUtility.To16Bit(highColor);

            if (lowColor16.Value < highColor16.Value)
            {
                MinColor = lowColor16;
                MaxColor = highColor16;
            }
            else
            {
                MinColor = highColor16;
                MaxColor = lowColor16;
            }
        }
Esempio n. 2
0
        public void CalculateDistanceBetween32BitColors()
        {
            var a        = Color.FromArgb(100, 130, 60);
            var b        = Color.FromArgb(150, 255, 200);
            var expected = Math.Sqrt((100 - 150) * (100 - 150) +
                                     (130 - 255) * (130 - 255) +
                                     (60 - 200) * (60 - 200));

            var result = ColorUtility.Distance(a, b);

            const double delta = 0.0001d;

            Assert.AreEqual(expected, result, delta);
        }
Esempio n. 3
0
        public void CalculateDistanceBetween16BitColors()
        {
            var a        = Color565.FromRgb(10, 16, 9);
            var b        = Color565.FromRgb(20, 63, 31);
            var expected = Math.Sqrt((10 - 20) * (10 - 20) +
                                     (16 - 63) * (16 - 63) +
                                     (9 - 31) * (9 - 31));

            var result = ColorUtility.Distance(a, b);

            const double delta = 0.0001d;

            Assert.AreEqual(expected, result, delta);
        }