/// <summary> /// The update thumb position. /// </summary> private void UpdateThumbPosition() { this.thumbTransform.X = this.Saturation * 0.01 * this.ActualWidth; this.thumbTransform.Y = (100 - this.Value) * 0.01 * this.ActualHeight; this.SelectedColor = ColorHelper.HsvToColor(this.Hue / 360.0, this.Saturation / 100.0, this.Value / 100.0); }
/// <summary> /// Converts a value. /// </summary> /// <param name="value">The value produced by the binding source.</param> /// <param name="targetType">The type of the binding target property.</param> /// <param name="parameter">The converter parameter to use.</param> /// <param name="culture">The culture to use in the converter.</param> /// <returns> /// A converted value. If the method returns <c>null</c>, the valid <c>null</c> value is used. /// </returns> public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var doubleValue = (double)value; return(ColorHelper.HsvToColor(doubleValue / 360, 1, 1)); }
/// <summary> /// The update selected color. /// </summary> private void UpdateSelectedColor() { this.SelectedColor = ColorHelper.HsvToColor(this.Hue / 360.0, this.Saturation / 100.0, this.Value / 100.0); // ColorUtils.FireSelectedColorChangedEvent(this, SelectedColorChangedEvent, oldColor, newColor); }
/// <summary> /// Called when a color component is changed. /// </summary> /// <param name="e"> /// The <see cref="System.Windows.DependencyPropertyChangedEventArgs"/> instance containing the event data. /// </param> protected virtual void OnComponentChanged(DependencyPropertyChangedEventArgs e) { if (this.withinColorChange) { return; } if (this.SelectedColor == null) { return; } Debug.WriteLine("ColorPickerPanel.OnComponentChanged {0}", this.SelectedColor); var color = this.SelectedColor.Value; this.withinComponentChange = true; this.withinColorChange = true; var i = Convert.ToInt32(e.NewValue); byte x = i <= 255 ? (byte)i : (byte)255; if (e.Property == AlphaProperty) { this.SelectedColor = Color.FromArgb(x, color.R, color.G, color.B); } if (e.Property == RedProperty) { this.SelectedColor = Color.FromArgb(color.A, x, color.G, color.B); this.UpdateHSV(color); } if (e.Property == GreenProperty) { this.SelectedColor = Color.FromArgb(color.A, color.R, x, color.B); this.UpdateHSV(color); } if (e.Property == BlueProperty) { this.SelectedColor = Color.FromArgb(color.A, color.R, color.G, x); this.UpdateHSV(color); } var hsv = color.ColorToHsv(); double y = Convert.ToDouble(e.NewValue); if (e.Property == HueProperty) { this.SelectedColor = ColorHelper.HsvToColor(y / 360, hsv[1], hsv[2], color.A / 255.0); this.UpdateRGB(this.SelectedColor.Value); } if (e.Property == SaturationProperty) { this.SelectedColor = ColorHelper.HsvToColor(hsv[0], y / 100, hsv[2], color.A / 255.0); this.UpdateRGB(this.SelectedColor.Value); } if (e.Property == BrightnessProperty) { this.SelectedColor = ColorHelper.HsvToColor(hsv[0], hsv[1], y / 100, color.A / 255.0); this.UpdateRGB(this.SelectedColor.Value); } this.withinColorChange = false; this.withinComponentChange = false; }