コード例 #1
0
        public void SetHsvColor(Color color)
        {
            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);
        }
コード例 #2
0
ファイル: ColorBoard.cs プロジェクト: thincster/Orc.Controls
        /// <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="predifined">The predifined.</param>
        private void UpdateControls(Color color, bool hsv, bool rgb, bool predifined)
        {
            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(Slider.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 (predifined)
                {
                    _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();
            }
        }
コード例 #3
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="predifined">The predifined.</param>
        private void UpdateControls(Color color, bool hsv, bool rgb, bool predifined)
        {
            if (Updating)
            {
                return;
            }

            try
            {
                BeginUpdate();

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

                    _sliderHsv.Value            = h;
                    _gradientStopHsvColor.Color = ColorHelper.HSV2RGB(h, 1d, 1d);

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

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

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

                    _sliderA.Value        = a;
                    _gradientStopA0.Color = Color.FromArgb(0, r, g, b);
                    _gradientStopA1.Color = Color.FromArgb(255, r, g, b);
                    _textBoxA.Text        = a.ToString("X2");

                    _sliderR.Value        = r;
                    _gradientStopR0.Color = Color.FromArgb(255, 0, g, b);
                    _gradientStopR1.Color = Color.FromArgb(255, 255, g, b);
                    _textBoxR.Text        = r.ToString("X2");

                    _sliderG.Value        = g;
                    _gradientStopG0.Color = Color.FromArgb(255, r, 0, b);
                    _gradientStopG1.Color = Color.FromArgb(255, r, 255, b);
                    _textBoxG.Text        = g.ToString("X2");

                    _sliderB.Value        = b;
                    _gradientStopB0.Color = Color.FromArgb(255, r, g, 0);
                    _gradientStopB1.Color = Color.FromArgb(255, r, g, 255);
                    _textBoxB.Text        = b.ToString("X2");
                }

                if (predifined)
                {
                    _brushColor.Color = color;
                    if (_dictionaryColor.ContainsKey(color))
                    {
                        _comboBoxColor.SelectedItem = _dictionaryColor[color];
                        _textBoxColor.Text          = string.Empty;
                    }
                    else
                    {
                        _comboBoxColor.SelectedItem = null;
                        _textBoxColor.Text          = color.ToString();
                    }
                }

                Color = color;
            }
            finally
            {
                EndUpdate();
            }
        }
コード例 #4
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());
                    }

                    Keyboard.Focus(_colorComboBox);
                }

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