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(); }
public static ColorRgb FromHsv(ColorHsv hsv) { return hsv.ToRgb(); }
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); }
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(); }
public ColorWheel() { this.InitializeComponent(); this._Color = new ColorHsv(0, 0, 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); }
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; }