Изменение интенсивности/яркости цвета в зависимости от переменной. - 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы