예제 #1
0
        /// <summary>
        /// The update controls.
        /// </summary>
        /// <param name="color">The color.</param>
        /// <param name="hsv">The hsv.</param>
        /// <param name="rgb">The rgb.</param>
        /// <param name="predefined">The predefined.</param>
        private void UpdateControls(Color color, bool hsv, bool rgb, bool predefined)
        {
            if (Updating)
            {
                return;
            }

            try
            {
                BeginUpdate();

                // HSV
                if (hsv)
                {
                    var h = ColorHelper.GetHSV_H(color);
                    var s = ColorHelper.GetHSV_S(color);
                    var v = ColorHelper.GetHSV_V(color);

                    _sliderHsv.SetCurrentValue(RangeBase.ValueProperty, h);
                    _gradientStopHsvColor.SetCurrentValue(GradientStop.ColorProperty, ColorHelper.HSV2RGB(h, 1d, 1d));

                    var x = s * (_rectangleHsv.ActualWidth - 1);
                    var y = (1 - v) * (_rectangleHsv.ActualHeight - 1);

                    _ellipseHsv.SetCurrentValue(Canvas.LeftProperty, x - _ellipseHsv.ActualWidth / 2);
                    _ellipseHsv.SetCurrentValue(Canvas.TopProperty, y - _ellipseHsv.ActualHeight / 2);
                }

                if (rgb)
                {
                    var a = color.A;
                    var r = color.R;
                    var g = color.G;
                    var b = color.B;

                    _sliderA.SetCurrentValue(RangeBase.ValueProperty, (double)a);
                    _gradientStopA0.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(0, r, g, b));
                    _gradientStopA1.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, g, b));
                    _textBoxA.SetCurrentValue(TextBox.TextProperty, a.ToString("X2"));

                    _sliderR.SetCurrentValue(RangeBase.ValueProperty, (double)r);
                    _gradientStopR0.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, 0, g, b));
                    _gradientStopR1.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, 255, g, b));
                    _textBoxR.SetCurrentValue(TextBox.TextProperty, r.ToString("X2"));

                    _sliderG.SetCurrentValue(RangeBase.ValueProperty, (double)g);
                    _gradientStopG0.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, 0, b));
                    _gradientStopG1.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, 255, b));
                    _textBoxG.SetCurrentValue(TextBox.TextProperty, g.ToString("X2"));

                    _sliderB.SetCurrentValue(RangeBase.ValueProperty, (double)b);
                    _gradientStopB0.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, g, 0));
                    _gradientStopB1.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, g, 255));
                    _textBoxB.SetCurrentValue(TextBox.TextProperty, b.ToString("X2"));
                }

                if (predefined)
                {
                    _brushColor.SetCurrentValue(SolidColorBrush.ColorProperty, color);
                    if (_dictionaryColor.ContainsKey(color))
                    {
                        _comboBoxColor.SetCurrentValue(Selector.SelectedItemProperty, _dictionaryColor[color]);
                        _textBoxColor.SetCurrentValue(TextBox.TextProperty, string.Empty);
                    }
                    else
                    {
                        _comboBoxColor.SetCurrentValue(Selector.SelectedItemProperty, null);
                        _textBoxColor.SetCurrentValue(TextBox.TextProperty, color.ToString());
                    }
                }

                SetCurrentValue(ColorProperty, color);
            }
            finally
            {
                EndUpdate();
            }
        }
예제 #2
0
        /// <summary>
        /// The update controls.
        /// </summary>
        /// <param name="color">The color.</param>
        /// <param name="hsv">The hsv.</param>
        /// <param name="rgb">The rgb.</param>
        /// <param name="predefined">The predefined.</param>
        private void UpdateControls(Color color, bool hsv, bool rgb, bool predefined)
        {
            if (Updating)
            {
                return;
            }

            try
            {
                BeginUpdate();

                // HSV
                if (hsv)
                {
                    var h = ColorHelper.GetHSV_H(color);
                    var s = ColorHelper.GetHSV_S(color);
                    var v = ColorHelper.GetHSV_V(color);

                    _hsvSlider.SetCurrentValue(RangeBase.ValueProperty, h);
                    _hsvColorGradientStop.SetCurrentValue(GradientStop.ColorProperty, ColorHelper.HSV2RGB(h, 1d, 1d));

                    var x = s * (_hsvRectangle.ActualWidth - 1);
                    var y = (1 - v) * (_hsvRectangle.ActualHeight - 1);

                    _hsvEllipse.SetCurrentValue(Canvas.LeftProperty, x - _hsvEllipse.ActualWidth / 2);
                    _hsvEllipse.SetCurrentValue(Canvas.TopProperty, y - _hsvEllipse.ActualHeight / 2);
                }

                if (rgb)
                {
                    var a = color.A;
                    var r = color.R;
                    var g = color.G;
                    var b = color.B;

                    _aSlider.SetCurrentValue(RangeBase.ValueProperty, (double)a);
                    _a0GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(0, r, g, b));
                    _a1GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, g, b));
                    _aTextBox.SetCurrentValue(TextBox.TextProperty, a.ToString("X2"));

                    _rSlider.SetCurrentValue(RangeBase.ValueProperty, (double)r);
                    _r0GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, 0, g, b));
                    _r1GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, 255, g, b));
                    _rTextBox.SetCurrentValue(TextBox.TextProperty, r.ToString("X2"));

                    _gSlider.SetCurrentValue(RangeBase.ValueProperty, (double)g);
                    _g0GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, 0, b));
                    _g1GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, 255, b));
                    _gTextBox.SetCurrentValue(TextBox.TextProperty, g.ToString("X2"));

                    _bSlider.SetCurrentValue(RangeBase.ValueProperty, (double)b);
                    _b0GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, g, 0));
                    _b1GradientStop.SetCurrentValue(GradientStop.ColorProperty, Color.FromArgb(255, r, g, 255));
                    _bTextBox.SetCurrentValue(TextBox.TextProperty, b.ToString("X2"));
                }

                if (predefined)
                {
                    _colorBrush.SetCurrentValue(SolidColorBrush.ColorProperty, color);
                    if (_dictionaryColor.ContainsKey(color))
                    {
                        _colorComboBox.SetCurrentValue(Selector.SelectedItemProperty, _dictionaryColor[color]);
                        _colorTextBox.SetCurrentValue(TextBox.TextProperty, string.Empty);
                    }
                    else
                    {
                        _colorComboBox.SetCurrentValue(Selector.SelectedItemProperty, null);
                        _colorTextBox.SetCurrentValue(TextBox.TextProperty, color.ToString());
                    }
                }

                SetCurrentValue(ColorProperty, color);
            }
            finally
            {
                EndUpdate();
            }
        }