Describes a color in terms of Hue, Saturation, and Value (brightness)
コード例 #1
0
ファイル: SpectrumSlider.cs プロジェクト: koen24/screentogif
        /// <summary>
        /// Converts an RGB color to an HSV color
        /// </summary>
        /// <param name="r">Red</param>
        /// <param name="b">Blue</param>
        /// <param name="g">Green</param>
        /// <returns>A HsvColor object.</returns>
        public static HsvColor ConvertRgbToHsv(int r, int b, int g)
        {
            double h = 0, s;

            double min = Math.Min(Math.Min(r, g), b);
            double v = Math.Max(Math.Max(r, g), b);
            double 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;
            }

            var hsvColor = new HsvColor();
            hsvColor.H = h;
            hsvColor.S = s;
            hsvColor.V = v / 255;

            return hsvColor;
        }
コード例 #2
0
        private void DetermineColor(Point p)
        {
            var hsv = new HsvColor(360 - ColorSlider.Value, 1, 1);
            hsv.S = p.X;
            hsv.V = 1 - p.Y;

            SelectedColor = ColorUtilities.ConvertHsvToRgb(hsv.H, hsv.S, hsv.V, SelectedColor.A);

            CurrentColor.Background = new SolidColorBrush(SelectedColor);

            #region Update TextBoxes

            _isUpdating = true;

            AlphaText.Value = SelectedColor.A;
            RedTextBox.Value = SelectedColor.R;
            GreenText.Value = SelectedColor.G;
            BlueText.Value = SelectedColor.B;

            HexadecimalText.Text = SelectedColor.ToString();

            _isUpdating = false;

            #endregion
        }
コード例 #3
0
        /// <summary>
        /// Converts an RGB color to an HSV color
        /// </summary>
        /// <param name="color">Color</param>
        /// <returns>A HsvColor object.</returns>
        public static HsvColor ConvertRgbToHsv(this Color color)
        {
            double h = 0, s;

            double min = Math.Min(Math.Min(color.R, color.G), color.B);
            double v = Math.Max(Math.Max(color.R, color.G), color.B);
            double delta = v - min;

            if (v == 0.0)
            {
                s = 0;
            }
            else
                s = delta / v;

            if (s == 0)
                h = 0.0;
            else
            {
                if (color.R == v)
                    h = (color.G - color.B) / delta;
                else if (color.G == v)
                    h = 2 + (color.B - color.R) / delta;
                else if (color.B == v)
                    h = 4 + (color.R - color.G) / delta;

                h *= 60;
                if (h < 0.0)
                    h = h + 360;
            }

            var hsvColor = new HsvColor();
            hsvColor.H = h;
            hsvColor.S = s;
            hsvColor.V = v / 255;

            return hsvColor;
        }