Пример #1
0
        private void OnColorSliderValueChanged(object sender, EventArgs e)
        {
            if (this.IgnoreChangedEvents)
            {
                return;
            }

            this.PushIgnoreChangedEvents();

            if (sender == redColorSlider ||
                sender == greenColorSlider ||
                sender == blueColorSlider)
            {
                ColorBgra color = ColorBgra.FromBgra(
                    blueColorSlider.Value.ClampToByte(),
                    greenColorSlider.Value.ClampToByte(),
                    redColorSlider.Value.ClampToByte(),
                    alphaColorSlider.Value.ClampToByte());

                this.SetColorGradientMinMaxColorsRgb(color.R, color.G, color.B);
                this.SetColorGradientMinMaxColorsAlpha(color.A);
                this.SetColorGradientValuesRgb(color.R, color.G, color.B);
                this.SetColorGradientMinMaxColorsAlpha(color.A);

                this.SyncHsvFromRgb(color);
                //OnUserColorChanged(rgbColor);
            }
            else if (
                sender == hueColorSlider ||
                sender == saturationColorSlider ||
                sender == valueColorSlider)
            {
                ColorHsv oldHsv = colorWheel1.Color;
                var hsv = new ColorHsv(
                    hueColorSlider.Value,
                    saturationColorSlider.Value,
                    valueColorSlider.Value);

                if (oldHsv != hsv)
                {
                    colorWheel1.Color = hsv;

                    this.SetColorGradientValuesHsv(
                        hsv.Hue,
                        hsv.Saturation,
                        hsv.Value);

                    this.SetColorGradientMinMaxColorsHsv(
                        hsv.Hue,
                        hsv.Saturation,
                        hsv.Value);

                    this.SyncRgbFromHsv(hsv);
                    //ColorRGB rgbColor = hsv.ToRgb();
                    //OnUserColorChanged(ColorBgra.FromBgra((byte)rgbColor.Blue, (byte)rgbColor.Green, (byte)rgbColor.Red, (byte)alphaUpDown.Value));
                }
            }

            this.PopIgnoreChangedEvents();
        }
Пример #2
0
 public static ColorRgb FromHsv(ColorHsv hsv)
 {
     return hsv.ToRgb();
 }
Пример #3
0
        private void SyncRgbFromHsv(ColorHsv hsv)
        {
            ColorRgb rgb = hsv.ToRgb();

            redColorSlider.Value = rgb.R;
            greenColorSlider.Value = rgb.G;
            blueColorSlider.Value = rgb.B;

            this.SetColorGradientValuesRgb(rgb.R, rgb.G, rgb.B);
            this.SetColorGradientMinMaxColorsRgb(rgb.R, rgb.G, rgb.B);
            SetColorGradientMinMaxColorsAlpha(alphaColorSlider.Value);
        }
Пример #4
0
        private void SetColorGradientMinMaxColorsHsv(int h, int s, int v)
        {
            var hueColors = new Color[361];

            for (int newH = 0; newH <= 360; ++newH)
            {
                var hsv = new ColorHsv(newH, 100, 100);
                hueColors[newH] = hsv.ToColor();
            }

            this.hueColorSlider.CustomGradient = hueColors;

            var satColors = new Color[101];

            for (int newS = 0; newS <= 100; ++newS)
            {
                var hsv = new ColorHsv(h, newS, v);
                satColors[newS] = hsv.ToColor();
            }

            this.saturationColorSlider.CustomGradient = satColors;

            this.valueColorSlider.MaxColor = new ColorHsv(h, s, 100).ToColor();
            this.valueColorSlider.MinColor = new ColorHsv(h, s, 0).ToColor();
        }
Пример #5
0
 public ColorWheel()
 {
     this.InitializeComponent();
     this._Color = new ColorHsv(0, 0, 0);
 }
Пример #6
0
        private void GrabColor(Point point)
        {
            // center our coordinate system so the middle is (0,0), and positive Y is facing up
            int cx = point.X - (Width / 2);
            int cy = point.Y - (Height / 2);

            double theta = Math.Atan2(cy, cx);

            if (theta < 0)
            {
                theta += 2 * Math.PI;
            }

            double alpha = Math.Sqrt((cx * cx) + (cy * cy));

            var h = (int)((theta / (Math.PI * 2)) * 360.0);
            // ReSharper disable PossibleLossOfFraction
            var s = (int)Math.Min(100.0, (alpha / (this.Width / 2)) * 100);
            // ReSharper restore PossibleLossOfFraction
            const int v = 100;

            this._Color = new ColorHsv(h, s, v);
            this.OnColorChanged();
            this.Invalidate(true);
        }
Пример #7
0
        private Color[] GetColors()
        {
            var colors = new Color[ColorTesselation];

            for (int i = 0; i < ColorTesselation; i++)
            {
                int hue = (i * 360) / ColorTesselation;
                colors[i] = new ColorHsv(hue, 100, 100).ToColor();
            }

            return colors;
        }