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); }
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)); }
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); } } } }