Генерация цветовых оттенков на основе высоты контурной линииC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Генерация цветовых оттенков на основе высоты контурной линии

Сообщение Anonymous »

Я работаю над программой, которая способна создавать участки суши и горы с контурными линиями. Я хотел бы выделить каждую контурную линию отдельным оттенком определенного цвета, скажем:
  • Зеленый 0-15 (LowLands)
  • Пшеничный Желтый 16–30 (Средние Земли)
  • Коричневый 31–40 (Высокие Земли)
  • Белоснежный 41–50 (Горные Вершины) >
Я попробовал несколько подходов, один из них — этот фрагмент кода, который я нашел на этом сайте.

Код: Выделить всё

public static Color[] GetColorShades(Color baseColor, int shadesCount)
{
shadesCount *= 2;
Color[] output = new Color[shadesCount];
for (int index = 0; index < shadesCount; index++)
{
output[index] = DarkenColor(baseColor, (double)index / (double)shadesCount);
}
return output;
}

private static Color DarkenColor(Color color, double fraction)
{
int red = (int)Math.Round(Math.Max(0, color.R - 255 * fraction));
int green = (int)Math.Round(Math.Max(0, color.G - 255 * fraction));
int blue = (int)Math.Round(Math.Max(0, color.B - 255 * fraction));
return Color.FromArgb(red, green, blue);
}
Этот код отлично работает для зеленого цвета. но по какой-то причине не может генерировать цветовые оттенки желтого и коричневого. Белый тоже кажется проблемой.
Может ли кто-нибудь помочь мне с алгоритмом, который разделит число, определяющее максимальную высоту, на четыре группы, каждая из которых имеет оттенки определенного цвета? Для вдохновения см. изображение.
Вот как это работает со строго определенными шестнадцатеричными цветовыми кодами:

Изображение

Вот что я получаю, когда применяю приведенный выше алгоритм:

Изображение


Подробнее здесь: https://stackoverflow.com/questions/786 ... -elevation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»