Я хочу показать своему пользователю, сколько (в процентах) их форм соответствуют новому стандарту. Я хочу, чтобы они визуально знали, что процентная сумма будет окрашена. Это будет 0xFF0000 (чисто красный) для 0% и 0x00FF00 (чисто зеленый) для 100%. Как лучше всего рассчитать цвет для каждого шага на этом пути?
Создание цветового градиента
comment
stackoverflow.com/questions/668263/
- person Pete Kirkham   schedule 08.06.2010
comment
Предположительно, новый стандарт не имеет ничего общего с доступностью, поскольку некоторые из ваших пользователей не смогут отличить красный цвет от зеленого.
- person Pete Kirkham   schedule 08.06.2010
comment
Да, зеленый ‹-› красный будет сложным для людей с цветовой слепотой.
- person Phil Gan   schedule 08.06.2010
comment
Нет, это просто то, сколько пользователей имеют электронные письма в своей форме. Красный ‹-› Зеленый не нужен, дальтоники все равно смогут увидеть номер.
- person Malfist   schedule 08.06.2010
Ответы (2)
Преобразование цветового пространства (предложенное Tony) даст вам наилучшие результаты. Однако, если это выходит за рамки того, что вы ищете, я предлагаю простой алгоритм, который дает вам желтый цвет (0xFFFF00) на 50%:
Для значений до 50 % Начните с 0xFF0000.
Добавьте 0xFF * Percentage / 50 к зеленому компоненту.
Для значений выше 50 % Начните с 0xFFFF00.
Вычтите 0xFF * Percentage / 50 из красного компонента.
Результаты выглядят достаточно хорошо для моих клиентов ;-)
person
Treb
schedule
08.06.2010
Вам не нужно вычислять его самостоятельно — попробуйте использовать LinearGradient
кисть. (msdn)
LinearGradientBrush linGrBrush = new LinearGradientBrush(
new Point(0, 10),
new Point(200, 10),
Color.FromArgb(255, 255, 0, 0), // Opaque red
Color.FromArgb(255, 0, 0, 255)); // Opaque blue
Pen pen = new Pen(linGrBrush);
e.Graphics.DrawLine(pen, 0, 10, 200, 10);
e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100);
e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);
person
Phil Gan
schedule
08.06.2010