2010-12-27 6 views
2

Ich frage mich, wie man über die Zuordnung von ganzen Zahlen zu Farben, aber so tun, dass die Sequenz keinen großen Einfluss auf die Farbe hat (obwohl es wirklich nicht viel ausmacht) und auch damit die gleiche Zahl immer wieder in die Funktion eingesteckt wird.Mapping ganze Zahlen zu dunklen Farben

Es ist für eine JTable und Färbung der Zeile der Tabelle zu markieren, die ähnlich, die die gleiche ID haben. Das Speichern von Metadaten bedeutet viel Unsinn und Ineffizienz, was ich gerne vermeiden würde.

Grundsätzlich f(x)->c for all x in the positive range of integers such that f(x)->c1, f(x+1)->c2, c1 !~ c2, wobei x ist die ID, und c ist die resultierende Farbe. Ich hatte über die Verwendung Random gedacht, aber das ändert sich basierend auf der Reihenfolge der Generierung von Zahlen. Ohne die hinzugefügte Sequenzialität wäre es in Ordnung.

Ich habe vergessen zu erwähnen, die Farben sollten dunkel sein, so dass der weiße Text richtig durchscheinen wird.

Cheers,
Chris

+0

Sie sollten eine Tabelle mit den Werten erstellen, über die Sie nachdenken. –

Antwort

5

Verwenden Sie eine hash function, um die RGB-Komponenten aus Ihrer Ganzzahl zu berechnen. Wenn Sie das übliche 1-Byte pro Komponente verwenden, generieren Sie einen 3-Byte-Hash-Wert. Jeder anständige Hash-Wert stellt sicher, dass ähnliche Eingaben zu nicht ähnlichen Hash-Werten führen.

Um sicherzustellen, dass die Farben dunkel genug sind, können Sie eines der Bits (z. B. das fünfte) bei 1 in jeder Farbkomponente fixieren. Oder Sie könnten das HSB-Schema verwenden, um die Dunkelheit zu beheben.

2

Ihr Wunsch nach einem automatisierten Ansatz gegeben, dass „schwärzlich“ Farben, würde ich schauen, um Color.getHSBColor(), und ändern Sie den Farbton während der Sättigung und Helligkeit gleich erzeugt. Sie müssen möglicherweise den Abschnitt des Farbrads ausschneiden, das Gelb darstellt.

Verwandte Themen