Как я могу создать случайный читабельный цвет из семени? C # - PullRequest
2 голосов
/ 26 апреля 2010

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

Log from section 1: Some text here 
Log from section 125: Some text here 
Log from section 17: Some text here 
Log from section 1: Some text here 
Log from section 125: Some text here 
Log from section 1: Some text here 
Log from section 17: Some text here

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

Я хочу создать метод, который будет принимать число и случайным образом генерировать уникальный цвет. Цвет должен быть читаемым на черном фоне, поэтому # 000000 не годится, а также # 101010 или что-то слишком темное для чтения.

В идеале два одинаковых числа не будут давать одинаковый цвет, поскольку в приведенных выше примерах числа 1 и 17 могут быть слишком похожими, а некоторые числа могут находиться в диапазоне 10000

Есть идеи по этому поводу?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2010

Существуют довольно строгие когнитивные ограничения на количество различных цветов, которые вы можете использовать. Было бы лучше тщательно предварительно выбрать диапазон цветов. Если вам действительно нужно различать более десятка или около того отдельных предметов, вам нужно использовать что-то еще, например, изменить цвет фона.

Кроме того, помните, что 10% мужчин (и, следовательно, разработчиков) не имеют дальтоников, поэтому если бы это не было только для вашей собственной пользы, я бы не стал слишком сильно полагаться на цвет.

Очень интересный альтернативный метод можно найти в инструменте обвинения TortoiseSVN, который динамически выделяет линии с соответствующими ревизиями при перемещении мыши по окну.

1 голос
/ 26 апреля 2010

Да. Просто сгенерируйте случайные числа для цвета в HSV цветовом пространстве и убедитесь, что V выше 50% (чтобы не было слишком темно) При необходимости конвертировать обратно в RGB . Довольно просто.

Чтобы убедиться, что цвета не слишком похожи ... Я не знаю. Узнать диапазон возможных чисел и равномерно разделить цветовое колесо?

...