Exemplo n.º 1
0
        private void setColor(Color newColor)
        {
            double hue = 0.0;

            double saturation = 0.0;

            double value = 0.5;

            ColorUtil.RgbToHsv(newColor.R, newColor.G, newColor.B, out hue, out saturation, out value);

            lastValue = new HSVvalues()
            {
                alpha = newColor.A, hue = hue, saturation = saturation, value = value
            };

            setColorPicker(hue, saturation, value);
        }
Exemplo n.º 2
0
        private void setColorPicker(double hue, double saturation, double value)
        {
            do
            {
                UIElement pick;

                if (backCanvas.Children.Count == 0)
                {
                    Ellipse rect = new Ellipse();

                    rect.Fill = Brushes.Black;

                    rect.Width = 5;

                    rect.Height = 5;

                    backCanvas.Children.Add(rect);

                    rect.RenderTransform = new TranslateTransform(-2.0, -2.0);
                }

                pick = backCanvas.Children[0];


                double minDuametr = hsImage.ActualWidth;

                if (hsImage.ActualWidth > hsImage.ActualHeight)
                {
                    minDuametr = hsImage.ActualHeight;
                }

                double radius = (minDuametr / 2);

                if (hue > 180.0)
                {
                    hue = hue - 360.0;
                }

                double angleRadians = hue / (180.0 / Math.PI);

                double ltang = Math.Tan(angleRadians);

                double yRel = Math.Sqrt((saturation * radius) * (saturation * radius) / (1 + ltang * ltang));

                double xRel = yRel * ltang;

                if (hue > -90.0 && hue < 90.0)
                {
                    xRel = -xRel;

                    yRel = -yRel;
                }

                lastValue = new HSVvalues()
                {
                    alpha = lastValue.alpha, hue = hue, saturation = saturation, value = value
                };

                Canvas.SetTop(pick, -xRel + radius - 2.0);

                Canvas.SetLeft(pick, -yRel + radius - 1.0);

                if ((value * 100.0) > valueSlider.Minimum)
                {
                    isNeedModify = true;
                }

                valueSlider.Value = value * 100.0;

                valueSlider_ValueChanged(null, null);

                isNeedModify = false;
            } while (false);
        }