private StackPanel CreateChildren(int items, double yOffset)
        {
            StackPanel panel = CreateHorizontalStackPanel();
            float      half  = items / 2.0f;

            for (int j = 1; j <= items; j++)
            {
                double xOffset  = (j - half - .5) * ColorSize;
                double distance = CalculateDistance(xOffset, yOffset);
                float  angle    = (float)CalculateAngle(xOffset, yOffset);
                Color  color;

                if (ColorSize * ColorBrightnessSteps >= distance)
                {
                    color = ColorSpace.ConvertHsvToRgb(angle, CalculateStep(ColorBrightnessSteps, distance), 1);
                }
                else
                {
                    double max = (ColorBrightnessSteps + ColorDarknessSteps + 1) * ColorSize;
                    distance = max - distance;

                    color = ColorSpace.ConvertHsvToRgb(angle, 1, CalculateStep(ColorDarknessSteps + 1, distance));
                }

                panel.Children.Add(CreateRectangle(color));
            }

            return(panel);
        }
示例#2
0
        private Color GetColor()
        {
            double yComponent   = 1 - (m_sampleY / ColorFieldHeight);
            double xComponent   = m_sampleX / ColorFieldWidth;
            double hueComponent = (m_huePos / RainbowHeight) * 360;

            return(ColorSpace.ConvertHsvToRgb(hueComponent, xComponent, yComponent));
        }
示例#3
0
        private Color GetColor()
        {
            var yComponent   = 1 - (m_sampleY / ColorFieldHeight);
            var xComponent   = m_sampleX / ColorFieldWidth;
            var hueComponent = (m_huePos / RainbowHeight) * 360;

            var result = ColorSpace.ConvertHsvToRgb(hueComponent, xComponent, yComponent);

            result.A = (byte)(m_alpha / TransparencyFieldWidth * 255);

            return(result);
        }
        private void UpdateSample()
        {
            _fromMovement = true;
            SetSampleLocation();

            var saturation = (float)(_position.X / SelectedHueColor.ActualWidth);
            var value      = (float)(1 - (_position.Y / SelectedHueColor.ActualHeight));

            if (!_adjustingColor)
            {
                ColorChanging(ColorSpace.ConvertHsvToRgb(ColorSlider.Color.GetHue(), saturation, value));
            }

            _fromMovement = false;
        }
        public void RgbHsvConversion()
        {
            ColorSpace cs = new ColorSpace();

            for (int r = 0; r < 255; r += 5)
            {
                for (int g = 0; g < 255; g += 5)
                {
                    for (int b = 0; b < 255; b += 5)
                    {
                        Color c1     = Color.FromArgb(255, (byte)r, (byte)g, (byte)b);
                        HSV   tmpHSL = cs.ConvertRgbToHsv(c1);
                        Color c2     = cs.ConvertHsvToRgb(tmpHSL.Hue, tmpHSL.Saturation, tmpHSL.Value);
                        Assert.AreEqual(c1.R, c2.R);
                        Assert.AreEqual(c1.G, c2.G);
                        Assert.AreEqual(c1.B, c2.B);
                        Assert.AreEqual(c1.A, c2.A);
                    }
                }
            }
        }