public static IEnumerable <System.Drawing.Color> Range(this System.Drawing.Color firstColor, System.Drawing.Color lastColor, int count)
    {
        float stepHueClockwise        = GetStepping(firstColor.GetHue(), lastColor.GetHue(), count, Direction.Clockwise);
        float stepHueCounterClockwise = GetStepping(firstColor.GetHue(), lastColor.GetHue(), count, Direction.CounterClockwise);

        if (Math.Abs(stepHueClockwise) >= Math.Abs(stepHueCounterClockwise))
        {
            return(Range(firstColor, lastColor, count, Direction.Clockwise));
        }
        else
        {
            return(Range(firstColor, lastColor, count, Direction.CounterClockwise));
        }
    }
Exemple #2
0
        public ColorPickerPalette()
        {
            InitializeComponent();

            Standard = new List <Brush>()
            {
                Brushes.Transparent,
                Brushes.White,
                Brushes.Gray,
                Brushes.Black,
                Brushes.Red,
                Brushes.Green,
                Brushes.Blue,
                Brushes.Cyan,
                Brushes.Yellow,
                Brushes.Orange,
                Brushes.Violet
            };
            var more = typeof(Brushes).GetProperties()
                       .Select(x => x.GetValue(null) as Brush);

            more = more.OrderBy(x =>
            {
                System.Windows.Media.Color winColor = ((SolidColorBrush)x).Color;
                System.Drawing.Color drawColor      = System.Drawing.Color.FromArgb(winColor.R, winColor.G, winColor.B);

                return(drawColor.GetHue() + drawColor.GetSaturation());
            });
            MoreLB.ItemsSource = more;
            Loaded            += ColorPickerPalette_Loaded;
        }
Exemple #3
0
        public Window1()
        {
            InitializeComponent();
            InitializeBackgroundWorker();
            expander1.Expanded  += new RoutedEventHandler(expander1_Expanded);
            expander1.Collapsed += new RoutedEventHandler(expander1_Collapsed);
            expander1.IsExpanded = false;
            SystemCore.SystemAbstraction.WindowManagement.GlassExtender.GlassBackground(this);
            {
                SolidColorBrush actual_brush = (SolidColorBrush)expander1.Background;
                _default_color = actual_brush.Color;
                System.Drawing.Color actual_color = System.Drawing.Color.FromArgb(1, actual_brush.Color.R, actual_brush.Color.G, actual_brush.Color.B);
                float current_hue        = actual_color.GetHue();
                float current_saturation = actual_color.GetSaturation();
                float current_brightness = actual_color.GetBrightness();

                Color new_color = HsvToRgb(current_hue, current_saturation, current_brightness / 1.25);
                new_color.A     = 100;
                _expanded_color = new_color;
            }
            if (Environment.OSVersion.Version.Major >= 6 && Environment.OSVersion.Version.Minor > 0)
            {
                _is_windows_seven = true;
            }
            StartDownload();
        }
Exemple #4
0
        /// <summary>
        /// Converts the given RGB color values into a HSV color.
        /// </summary>
        /// <param name="color"></param>
        /// <returns></returns>
        public static HsvColor RGBToHSV(Color?color)
        {
            if (color is null)
            {
                return(new HsvColor(0, 0, 0));
            }

            System.Drawing.Color convColor = System.Drawing.Color.FromArgb(color.Value.A,
                                                                           color.Value.R,
                                                                           color.Value.G,
                                                                           color.Value.B);

            int max = Math.Max(convColor.R, Math.Max(convColor.G, convColor.B));
            int min = Math.Min(convColor.R, Math.Min(convColor.G, convColor.B));

            double hue = convColor.GetHue();

            if (hue > 359)
            {
                hue = 359;
            }

            double saturation = (max == 0) ? 0 : 1d - (1d * min / max);
            double value      = max / 255d;

            return(new HsvColor(hue, saturation, value));
        }
Exemple #5
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            SolidColorBrush result = new SolidColorBrush();

            if (value != null)
            {
                try
                {
                    Color inputColor           = ((SolidColorBrush)value).Color;
                    System.Drawing.Color color = System.Drawing.Color.FromArgb(inputColor.A,
                                                                               inputColor.R,
                                                                               inputColor.G,
                                                                               inputColor.B);

                    Color lockedColor = ConvertHSVtoRGB(color.GetHue(), color.GetSaturation(), LOCKED_BRIGHTNESS_VALUE);
                    result.Color = lockedColor;
                }
                catch
                {
                    result.Color = Colors.Transparent;
                }
            }
            else
            {
                result.Color = Colors.Transparent;
            }

            return(result);
        }
Exemple #6
0
 public HSLColor(Color c)
 {
     System.Drawing.Color c1 = System.Drawing.Color.FromArgb(255, c.R, c.G, c.B);
     hue        = c1.GetHue();
     saturation = c1.GetSaturation();
     luminance  = c1.GetBrightness();
 }
        private System.Drawing.Color getAverageColor(System.Drawing.Bitmap bm)
        {
            var list = new Dictionary <System.Drawing.Color, int>();
            int addR = 0;
            int addG = 0;
            int addB = 0;

            System.Drawing.Bitmap myImage = new System.Drawing.Bitmap(bm, new System.Drawing.Size(50, 50));
            for (int x = 0; x < myImage.Width; x++)
            {
                for (int y = 0; y < myImage.Height; y++)
                {
                    System.Drawing.Color color = myImage.GetPixel(x, y);
                    if (!list.ContainsKey(color))
                    {
                        list.Add(color, 1);
                    }
                    else
                    {
                        list[color]++;
                    }
                }
            }
            System.Drawing.Color keyOfMaxValue = list.Aggregate((x, y) => x.Value > y.Value ? x : y).Key;
            if (keyOfMaxValue.GetBrightness() < 0.5F)
            {
                Color higherBrightness = ColorFromHSV(keyOfMaxValue.GetHue(), keyOfMaxValue.GetSaturation(), 0.85F);
                keyOfMaxValue = System.Drawing.Color.FromArgb(higherBrightness.R, higherBrightness.G, higherBrightness.B);
            }
            System.Drawing.Color returnColor = System.Drawing.Color.FromArgb((int)keyOfMaxValue.R + addR, (int)keyOfMaxValue.G + addG, (int)keyOfMaxValue.B + addB);
            return(returnColor);
        }
Exemple #8
0
        private static string ColorToHsl(System.Drawing.Color c)
        {
            var h = Math.Round(c.GetHue());
            var s = Math.Round(c.GetSaturation() * 100);
            var l = Math.Round(c.GetBrightness() * 100);

            return("hsl(" + h + ", " + s + "%, " + l + "%)");
        }
        public int Compare(object firstItem, object secondItem)
        {
            if (firstItem == null || secondItem == null)
            {
                return(-1);
            }

            ColorItem colorItem1 = ( ColorItem )firstItem;
            ColorItem colorItem2 = ( ColorItem )secondItem;

            System.Drawing.Color drawingColor1 = System.Drawing.Color.FromArgb(colorItem1.Color.A, colorItem1.Color.R, colorItem1.Color.G, colorItem1.Color.B);
            System.Drawing.Color drawingColor2 = System.Drawing.Color.FromArgb(colorItem2.Color.A, colorItem2.Color.R, colorItem2.Color.G, colorItem2.Color.B);

            // Compare Hue
            double hueColor1 = Math.Round(( double )drawingColor1.GetHue(), 3);
            double hueColor2 = Math.Round(( double )drawingColor2.GetHue(), 3);

            if (hueColor1 > hueColor2)
            {
                return(1);
            }
            else if (hueColor1 < hueColor2)
            {
                return(-1);
            }
            else
            {
                // Hue is equal, compare Saturation
                double satColor1 = Math.Round(( double )drawingColor1.GetSaturation(), 3);
                double satColor2 = Math.Round(( double )drawingColor2.GetSaturation(), 3);

                if (satColor1 > satColor2)
                {
                    return(1);
                }
                else if (satColor1 < satColor2)
                {
                    return(-1);
                }
                else
                {
                    // Saturation is equal, compare Brightness
                    double brightColor1 = Math.Round(( double )drawingColor1.GetBrightness(), 3);
                    double brightColor2 = Math.Round(( double )drawingColor2.GetBrightness(), 3);

                    if (brightColor1 > brightColor2)
                    {
                        return(1);
                    }
                    else if (brightColor1 < brightColor2)
                    {
                        return(-1);
                    }
                }
            }

            return(0);
        }
Exemple #10
0
        //https://stackoverflow.com/questions/359612/how-to-change-rgb-color-to-hsv

        public static void ColorToHsv(this System.Drawing.Color color, out double hue, out double saturation, out double value)
        {
            var max = Utils.Greatest(color.R, color.G, color.B);
            var min = Utils.Lowest(color.R, color.G, color.B);

            hue        = color.GetHue();
            saturation = (max == 0) ? 0 : 1d - (1d * min / max);
            value      = max / 255d;
        }
Exemple #11
0
        // Normalised so that h is 0..1, not 0..360
        public static void ColorToHSV(System.Drawing.Color color, out float hue, out float saturation, out float value)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            hue        = color.GetHue() / 360.0f;
            saturation = (float)(max == 0 ? 0 : 1d - 1d * min / max);
            value      = (float)(max / 255d);
        }
Exemple #12
0
        // See: https://stackoverflow.com/a/1335465

        public static void DrawingColorToHsv(this DColor color, out double hue, out double saturation, out double value)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            hue        = color.GetHue();
            saturation = max == 0 ? 0 : 1d - 1d * min / max;
            value      = max / 255d;
        }
Exemple #13
0
        public static void ColorToHSV(System.Drawing.Color color, out double hue, out double saturation, out double value)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            hue        = color.GetHue();
            saturation = (max == 0) ? 0 : 1d - (1d * min / max);
            value      = max / 255d;
        }
Exemple #14
0
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        public static void ColorToHSV(Color color, out double hue, out double saturation, out double value)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            hue = color.GetHue();
            saturation = (max == 0) ? 0 : 1d - (1d * min / max);
            value = max / 255d;
        }
        void SendColorToArduino(SerialPort port)
        {
            Plugin.log.Debug("Before color boost: " + redLeft + " " + greenLeft + " " + blueLeft);
            Plugin.log.Debug("Before color boost: " + redRight + " " + greenRight + " " + blueRight);

            int r1, g1, b1;
            int r2, g2, b2;

            System.Drawing.Color colorLeft  = System.Drawing.Color.FromArgb(redLeft, greenLeft, blueLeft);
            System.Drawing.Color colorRight = System.Drawing.Color.FromArgb(redRight, greenRight, blueRight);

            double h1 = colorLeft.GetHue();
            double h2 = colorRight.GetHue();

            Plugin.log.Debug("double h1 = " + h1);
            Plugin.log.Debug("double h2 = " + h2);

            HsvToRgb(h1, 1, 1, out r1, out g1, out b1);
            HsvToRgb(h2, 1, 1, out r2, out g2, out b2);

            Plugin.log.Debug("After color boost: " + r1 + " " + g1 + " " + b1);
            Plugin.log.Debug("After color boost: " + r2 + " " + g2 + " " + b2);

            Color rightColor = new Color(r1, g1, b1);
            Color leftColor  = new Color(r2, g2, b2);

            decimal p_r = Convert.ToDecimal(redLeft.ToString());    //Primary Red
            decimal p_g = Convert.ToDecimal(greenLeft.ToString());  //Primary Green
            decimal p_b = Convert.ToDecimal(blueLeft.ToString());   //Primary Blue
            decimal s_r = Convert.ToDecimal(redRight.ToString());   //Secondary Red
            decimal s_g = Convert.ToDecimal(greenRight.ToString()); //Secondary Green
            decimal s_b = Convert.ToDecimal(blueRight.ToString());  //Secondary Blue

            byte[] colorsByte = new byte[8];
            colorsByte[0] = Convert.ToByte('$');
            colorsByte[1] = Convert.ToByte(p_r);
            colorsByte[2] = Convert.ToByte(p_g);
            colorsByte[3] = Convert.ToByte(p_b);
            colorsByte[4] = Convert.ToByte(s_r);
            colorsByte[5] = Convert.ToByte(s_g);
            colorsByte[6] = Convert.ToByte(s_b);
            colorsByte[7] = Convert.ToByte('%');

            for (int x = 0; x < colorsByte.Length; x++)
            {
                try
                {
                    Plugin.log.Info("Writing: " + colorsByte[x]);
                }
                catch (Exception e)
                {
                    Plugin.log.Error(e);
                }
            }
            port.Write(colorsByte, 0, 8);
        }
Exemple #16
0
        public static HSB RGBToHSB(System.Drawing.Color c)
        {
            HSB hsb = new HSB();

            hsb.H = c.GetHue();
            hsb.S = c.GetSaturation();
            hsb.B = c.GetBrightness();
            hsb.A = c.A;
            return(hsb);
        }
Exemple #17
0
        /// <summary>
        /// 按比例,获取指定色以比例为饱和度的色
        /// </summary>
        /// <param name="scale">比例, 0-1</param>
        /// <param name="orgcolor">原始色</param>
        /// <returns></returns>
        public static Color getColorSaturation(double scale, Color orgcolor)
        {
            Color color;

            System.Drawing.Color cOrg = System.Drawing.Color.FromArgb(orgcolor.A, orgcolor.R, orgcolor.G, orgcolor.B);
            //color = FromAhsb(255, cOrg.GetHue(), (float)scale, 0.5f);
            System.Drawing.Color dc = HSBColor.FromHSB(new HSBColor(255, cOrg.GetHue(), (float)scale * 255, 255f));
            color = Color.FromArgb(dc.A, dc.R, dc.G, dc.B);
            return(color);
        }
Exemple #18
0
        public static MyColor Classify(int red, int green, int blue)
        {
            SystemColor color = SystemColor.FromArgb(red, green, blue);

            float hue = color.GetHue();
            float sat = color.GetSaturation();
            float lgt = color.GetBrightness();

            MyColor ans = MyColor.None;

            if (lgt < 0.2)
            {
                ans = MyColor.Black;
            }
            else if (lgt > 0.8)
            {
                ans = MyColor.White;
            }

            else if (sat < 0.25)
            {
                ans = MyColor.Gray;
            }

            else if (hue < 30)
            {
                ans = MyColor.Red;
            }
            else if (hue < 90)
            {
                ans = MyColor.Yellow;
            }
            else if (hue < 150)
            {
                ans = MyColor.Green;
            }
            else if (hue < 210)
            {
                ans = MyColor.Cyan;
            }
            else if (hue < 270)
            {
                ans = MyColor.Blue;
            }
            else if (hue < 330)
            {
                ans = MyColor.Magenta;
            }
            else
            {
                ans = MyColor.Red;
            }

            return(ans);
        }
Exemple #19
0
        /// <summary>
        /// Color to HSV converter
        /// </summary>
        /// <param name="color"></param>
        /// <returns></returns>
        public static System.Drawing.Color ColorToHSV(System.Drawing.Color color)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            var hue        = (color.GetHue() + 180) % 360;
            var saturation = (max == 0) ? 0 : 1d - (1d * min / max);
            var value      = max / 255d;

            return(HSVToRGB(hue, saturation, value));
        }
Exemple #20
0
        // http://stackoverflow.com/a/1626175/1069200
        public static Hsv From(System.Drawing.Color color)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            var hue        = color.GetHue();
            var saturation = max == 0 ? 0 : 1d - (1d * min / max);
            var value      = max / 255d;

            return(new Hsv(hue, saturation, value));
        }
Exemple #21
0
        private static string ColorToHsv(System.Drawing.Color c)
        {
            int max = Math.Max(c.R, Math.Max(c.G, c.B));
            int min = Math.Min(c.R, Math.Min(c.G, c.B));

            var h = Math.Round(c.GetHue());
            var s = (max == 0) ? 0 : 1d - (1d * min / max);
            var v = max / 255d;

            return("hsv(" + h + ", " + Math.Round(s * 100) + ", " + Math.Round(v * 100) + ")");
        }
        public static double Distance(this Color source, Color target)
        {
            System.Drawing.Color c1 = source.ToDrawingColour();
            System.Drawing.Color c2 = target.ToDrawingColour();

            double hue        = c1.GetHue() - c2.GetHue();
            double saturation = c1.GetSaturation() - c2.GetSaturation();
            double brightness = c1.GetBrightness() - c2.GetBrightness();

            return((hue * hue) + (saturation * saturation) + (brightness * brightness));
        }
Exemple #23
0
        internal static ColorHSL FromSystemDrawingColor(System.Drawing.Color color)
        {
            ColorHSL rv = new ColorHSL
            {
                Hue        = color.GetHue() / 360.0,
                Saturation = color.GetSaturation(),
                Lightness  = color.GetBrightness()
            };

            return(rv);
        }
Exemple #24
0
        public void ColorToHSV(Color tcolor, ref double saturation, ref double value)
        {
            System.Drawing.Color color = System.Drawing.Color.FromArgb(tcolor.A, tcolor.R, tcolor.G, tcolor.B);


            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            Hue        = color.GetHue();
            saturation = (max == 0) ? 0 : 1.0D - (1.0D * min / max);
            value      = max / 255.0D;
        }
Exemple #25
0
        public static void ColorToAHSV(Color color, out byte alpha, out double hue, out double saturation, out double value)
        {
            System.Drawing.Color sysColor =
                System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B);
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            alpha      = color.A;
            hue        = sysColor.GetHue();
            saturation = (max == 0) ? 0 : 1d - (1d * min / max);
            value      = max / 255d;
        }
Exemple #26
0
        public static Vector3 ColorToHSV(this Color rgb)
        {
            System.Drawing.Color color = System.Drawing.Color.FromArgb(rgb.R, rgb.G, rgb.B);
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            float hue        = color.GetHue() / 360f;
            float saturation = (max == 0) ? 0 : 1f - (1f * min / max);
            float value      = max / 255f;

            return(new Vector3(hue, saturation, value));
        }
Exemple #27
0
        private void SendColorToArduino(SerialPort port)
        {
            Plugin.log.Debug($"Before color boost: {redLeft} {greenLeft} {blueLeft}");
            Plugin.log.Debug($"Before color boost: {redRight} {greenRight} {blueRight}");
            System.Drawing.Color colorLeft  = System.Drawing.Color.FromArgb(redLeft, greenLeft, blueLeft);
            System.Drawing.Color colorRight = System.Drawing.Color.FromArgb(redRight, greenRight, blueRight);

            double h1 = colorLeft.GetHue();
            double h2 = colorRight.GetHue();

            Plugin.log.Debug($"double h1 = {h1}");
            Plugin.log.Debug($"double h2 = {h2}");

            HsvToRgb(h1, 1, 1, out int r1, out int g1, out int b1);
            HsvToRgb(h2, 1, 1, out int r2, out int g2, out int b2);

            Plugin.log.Debug($"After color boost: {r1} {g1} {b1}");
            Plugin.log.Debug($"After color boost: {r2} {g2} {b2}");

            var rightColor = new Color(r1, g1, b1);
            var leftColor  = new Color(r2, g2, b2);

            decimal PrimaryRed     = Convert.ToDecimal(redLeft.ToString());
            decimal PrimaryGreen   = Convert.ToDecimal(greenLeft.ToString());
            decimal PrimaryBlue    = Convert.ToDecimal(blueLeft.ToString());
            decimal SecondaryRed   = Convert.ToDecimal(redRight.ToString());
            decimal SecondaryGreen = Convert.ToDecimal(greenRight.ToString());
            decimal SecondaryBlue  = Convert.ToDecimal(blueRight.ToString());

            byte[] colorsByte = new byte[8];
            colorsByte[0] = Convert.ToByte('$');
            colorsByte[1] = Convert.ToByte(PrimaryRed);
            colorsByte[2] = Convert.ToByte(PrimaryGreen);
            colorsByte[3] = Convert.ToByte(PrimaryBlue);
            colorsByte[4] = Convert.ToByte(SecondaryRed);
            colorsByte[5] = Convert.ToByte(SecondaryGreen);
            colorsByte[6] = Convert.ToByte(SecondaryBlue);
            colorsByte[7] = Convert.ToByte('%');

            for (int i = 0; i < colorsByte.Length; i++)
            {
                try
                {
                    Plugin.log.Info("Writing: " + colorsByte[i]);
                }
                catch (Exception e)
                {
                    Plugin.log.Error(e);
                }
            }
            port.Write(colorsByte, 0, 8);
        }
Exemple #28
0
        // Converts an RGB color to an HSV color.
        public static HsvColor ConvertRgbToHsv(int r, int b, int g)
        {
            System.Drawing.Color otherColor = System.Drawing.Color.FromArgb(255, r, b, g);

            return
                (new HsvColor(
                     otherColor.GetHue(),
                     otherColor.GetSaturation(),
                     otherColor.GetBrightness()));

            /*
             *
             * double delta, min;
             * double h = 0, s, v;
             *
             * min = Math.Min(Math.Min(r, g), b);
             * v = Math.Max(Math.Max(r, g), b);
             * delta = v - min;
             *
             * if (v == 0.0) {
             *  s = 0;
             *
             * }
             * else
             *  s = delta / v;
             *
             * if (s == 0)
             *  h = 0.0;
             *
             * else
             * {
             *  if (r == v)
             *      h = (g - b) / delta;
             *  else if (g == v)
             *      h = 2 + (b - r) / delta;
             *  else if (b == v)
             *      h = 4 + (r - g) / delta;
             *
             *  h *= 60;
             *  if (h < 0.0)
             *      h = h + 360;
             *
             * }
             *
             * HsvColor hsvColor = new HsvColor();
             * hsvColor.H = h;
             * hsvColor.S = s;
             * hsvColor.V = v / 255;
             *
             * return hsvColor;
             */
        }
Exemple #29
0
        //
        /// <summary>
        /// Converts RGB to HSL
        /// </summary>
        /// <remarks>Takes advantage of whats already built in to .NET by using the Color.GetHue, Color.GetSaturation and Color.GetBrightness methods</remarks>
        /// <param name="c">A Color to convert</param>
        /// <returns>An HSL value</returns>
        public static HSL RGB_to_HSL(Color c)
        {
            System.Drawing.Color color = System.Drawing.Color.FromArgb(c.A, c.R, c.G, c.B);


            var hsl = new HSL();

            hsl.H = color.GetHue() / 360.0; // we store hue as 0-1 as opposed to 0-360
            hsl.L = color.GetBrightness();
            hsl.S = color.GetSaturation();
            hsl.A = color.A / 255.0;

            return(hsl);
        }
Exemple #30
0
        /// <summary>
        /// 按比例,获取两个色之间的色
        /// </summary>
        /// <param name="scale">比例, 0-1之间的数据</param>
        /// <param name="colorStart">开始颜色</param>
        /// <param name="colorEnd">结束颜色</param>
        /// <returns></returns>
        public static Color getColorBetween(double scale, Color colorStart, Color colorEnd)
        {
            Color color;

            System.Drawing.Color cStart = System.Drawing.Color.FromArgb(colorStart.A, colorStart.R, colorStart.G, colorStart.B);
            System.Drawing.Color cEnd   = System.Drawing.Color.FromArgb(colorEnd.A, colorEnd.R, colorEnd.G, colorEnd.B);
            float hstart = cStart.GetHue();
            float hend   = cEnd.GetHue();
            float hue    = hstart + (hend - hstart) * (float)scale;

            System.Drawing.Color dc = HSBColor.FromHSB(new HSBColor(255, hue * 255 / 360, 255f, 255f));
            color = Color.FromArgb(dc.A, dc.R, dc.G, dc.B);
            return(color);
        }
Exemple #31
0
        public static HsvColor FromColor(
            System.Drawing.Color color)
        {
            int max = Math.Max(color.R, Math.Max(color.G, color.B));
            int min = Math.Min(color.R, Math.Min(color.G, color.B));

            var h = color.GetHue();
            var s = max == 0 ? 0 : 1d - 1d * min / max;
            var v = max / 255d;

            return(new HsvColor(
                       h,
                       s,
                       v));
        }