Отображение целых в темные цвета - PullRequest
2 голосов
/ 27 декабря 2010

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

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

В основном, f(x)->c for all x in the positive range of integers such that f(x)->c1, f(x+1)->c2, c1 !~ c2, где x - идентификатор, а c - результирующий цвет.Я думал об использовании Random, но это меняется в зависимости от последовательности генерации чисел.Без добавления последовательности все будет в порядке.

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

Приветствия,Chris

Ответы [ 3 ]

5 голосов
/ 27 декабря 2010

Используйте хеш-функцию для вычисления компонентов RGB из целого числа. Если вы используете обычный 1 байт на компонент, генерируйте 3-байтовое хеш-значение. Любое приличное значение хеш-функции гарантирует, что аналогичные входные данные приведут к неодинаковым значениям хеш-функции.

Чтобы убедиться, что цвета достаточно темные, вы можете зафиксировать один из их битов (например, 5-й) в 1 в каждом компоненте цвета. Или вы можете использовать схему HSB, фиксирующую уровень темноты.

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

Также рассмотрим brighter() и darker() методы Color.Этот пример использует первый в своем FocusHandler.

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

Учитывая ваше желание автоматизированного подхода, который производит "темные" цвета, я бы посмотрел на Color.getHSBColor () и изменил оттенок, сохраняя насыщенность и яркость одинаковыми.Возможно, вам придется вырезать часть цветового круга, которая представляет желтый цвет.

...