Изменение интенсивности/яркости цвета в зависимости от переменной. - C#
Формулировка задачи:
Есть переменная weight, изменяемая от 1 до 1000. Требуется сделать, чтобы цвет неких объектов визуально изменялся соответственно значению переменной: интенсивность/яркость/как угодно...
пока додумался сделать только так:
a = 255 * weight / 1000;
color1 = Color.FromArgb(0, 0,(int)Math.Round(a,0));
хотелось бы использовать более наглядный способ...
Решение задачи: «Изменение интенсивности/яркости цвета в зависимости от переменной.»
textual
Листинг программы
public static void ColorToHSV(Color color, out double hue, out double saturation, out double value) { int max = Math.Max(color.R, Math.Max(color.G, color.B)); int min = Math.Min(color.R, Math.Min(color.G, color.B)); hue = color.GetHue(); saturation = (max == 0) ? 0 : 1d - (1d * min / max); value = max / 255d; } public static Color ColorFromHSV(double hue, double saturation, double value) { int hi = Convert.ToInt32(Math.Floor(hue / 60)) % 6; double f = hue / 60 - Math.Floor(hue / 60); value = value * 255; int v = Convert.ToInt32(value); int p = Convert.ToInt32(value * (1 - saturation)); int q = Convert.ToInt32(value * (1 - f * saturation)); int t = Convert.ToInt32(value * (1 - (1 - f) * saturation)); if (hi == 0) return Color.FromArgb(255, v, t, p); else if (hi == 1) return Color.FromArgb(255, q, v, p); else if (hi == 2) return Color.FromArgb(255, p, v, t); else if (hi == 3) return Color.FromArgb(255, p, q, v); else if (hi == 4) return Color.FromArgb(255, t, p, v); else return Color.FromArgb(255, v, p, q); } ColorToHSV(color1, out h, out s, out v); s = weight / 1000.0; color1 = ColorFromHSV(h, s, v);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д