public RgbColor ConvertToRgbColor() { double sValueFromZeroToOne = this.S / 100; double vValueFromZeroToOne = this.V / 100; double c = vValueFromZeroToOne * sValueFromZeroToOne; double x = c * (1 - Math.Abs(this.H / 60 % 2 - 1)); double m = vValueFromZeroToOne - c; var rgbColor = new RgbColor(); double rColorIntermediate = 0, gColorIntermediate = 0, bColorIntermediate = 0; switch (this.H) { case double degree when degree >= 0 && degree < 60: rColorIntermediate = c; gColorIntermediate = x; break; case double degree when degree >= 60 && degree < 120: rColorIntermediate = x; gColorIntermediate = c; break; case double degree when degree >= 120 && degree < 180: gColorIntermediate = c; bColorIntermediate = x; break; case double degree when degree >= 180 && degree < 240: gColorIntermediate = x; bColorIntermediate = c; break; case double degree when degree >= 240 && degree < 300: rColorIntermediate = x; bColorIntermediate = c; break; case double degree when degree >= 300 && degree < 361: rColorIntermediate = c; bColorIntermediate = x; break; } rgbColor.R = (rColorIntermediate + m) * 255; rgbColor.G = (gColorIntermediate + m) * 255; rgbColor.B = (bColorIntermediate + m) * 255; return(rgbColor); }
private void ColorPicker_OnSelectedColorChanged(object sender, RoutedPropertyChangedEventArgs <Color?> e) { if (_loading) { return; } var rgbColor = new RgbColor(ColorPicker.R, ColorPicker.G, ColorPicker.B); _loading = true; SetCmykColorToSliders(rgbColor.ConvertToCmykColor()); SetHsvColorToSliders(rgbColor.ConvertToHsvColor()); SetLabColorToSliders(rgbColor.ConvertToLabColor()); _loading = false; }
private void SetRgbColorToColorPicker(RgbColor rgbColor) { ColorPicker.R = (byte)rgbColor.R; ColorPicker.G = (byte)rgbColor.G; ColorPicker.B = (byte)rgbColor.B; }