c # rgb цветовая гамма - PullRequest
       2

c # rgb цветовая гамма

2 голосов
/ 02 декабря 2010

У меня есть требование для отображения определенного цветового представления в зависимости от данных.На одном конце шкалы зеленый, а другой красный.Шкала должна охватывать цвета между ними.

Я доволен фактическим программированием, но не знаю, как масштабировать цвета RGB.Кто-нибудь знает весы для такого рода вещей?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 02 декабря 2010

Следующий метод должен работать для вас:

    Color GetColor(Int32 rangeStart /*Complete Red*/, Int32 rangeEnd /*Complete Green*/, Int32 actualValue)
    {
        if (rangeStart >= rangeEnd) return Colors.Black;

        Int32 max = rangeEnd - rangeStart; // make the scale start from 0
        Int32 value = actualValue - rangeStart; // adjust the value accordingly

        Int32 green = (255 * value) / max; // calculate green (the closer the value is to max, the greener it gets)
        Int32 red = 255 - green; // set red as inverse of green

        return Color.FromRgb((Byte)red, (Byte)green, (Byte)0);
    }
4 голосов
/ 02 декабря 2010

Это то, что вы имеете в виду?

Color GetColor(int scale)
{
    // scale is between 1 and 255
    return Color.FromArgb(255, scale, 255 - scale, 0);
}
2 голосов
/ 02 декабря 2010

Помимо линейной шкалы, вы, возможно, обнаружите, что вы получите более четкое представление о послании с помощью небольшой теории цвета.В зависимости от того, сколько времени вы хотите потратить, вы также можете посмотреть, например,

Синтия Брюер

Adobe Kuler

Стэнфордская лекция по цвету для визуализации

среди многих, многих других - Google для обработки и визуализации данных тоже.

...