2011-03-24 13 views
7

Necesito asignar colores para distinguir entre diferentes elementos. Caso simple: ordenar filas de diferentes colores según el cliente.¿Cómo puedo obtener una lista de colores visualmente distintos?

No deseo que el usuario elija un color para cada cliente, quiero hacerlo en tiempo de ejecución.

Si hay un solo cliente que va a utilizar "rojo", si hay dos "rojo" y "blanco", ...

Por supuesto que puedo crear mi propia GimmeRandomColour(i: index) función que utiliza i y la RGB función para crear buenos colores aleatorios (pero en este caso la creación de buenos colores puede ser complicado). O puedo decir si i es 0 dame clRed, ... (de esta manera, crear muchos colores puede ser un problema).

¿Cómo puedo obtener una "buena lista de colores" con niveles aceptables de contraste?

+0

No fuera de la caja. Eso es demasiado específico para proporcionar una función incorporada. –

+1

Crea tu propia paleta y usa muestreo aleatorio sin reemplazo. –

Respuesta

7

Sin función incorporada en Delphi. Consulte esta pregunta para encontrar maneras de generar esquemas de color agradables.

Algorithm to randomly generate an aesthetically-pleasing color palette

+0

Algunas buenas referencias aquí. –

+0

Buen enlace, pero como escribí al final de mi pregunta "al azar" no es correcto. Quiero siempre el mismo color para un valor dado de i. Algo así como el caso i de 0 Resultado: = clRed; 1 resultado: = clBlue; 2 ... pero quiero algo que tenga sentido también para i = 100, incluso si de forma realista lo usaré para i <50. Por supuesto que puedo codificar 50 colores, así que estoy seguro de que funcionará bien. – LaBracca

+0

@ user193655 Para obtener siempre el mismo valor para un I dado, para cada uno diferente uso el algoritmo sugerido al azar para generar un nuevo color y unir ese color con ese I particular, para que pueda obtener el mismo color con getColorFor (I) llamadas. Si desea obtener el mismo color para diferentes ejecuciones de programa, almacene el enlace I = ColorValue en una base de datos, el registro, un archivo Ini o config. – jachguate

2

Un enfoque común es usar los valores $ 00, $ 33, $ 66, $ 99, $ CC y $ FF (Random(6) * $33) para cada componente de color RGB.

Eso dará como resultado 216 colores diferentes que son seguros de usar.

Ver ejemplos en wikipedia.

+0

Se refiere a "para cada componente RGB ** **". –

+0

@Andreas, originalmente quise decir "para cada color rojo, verde y azul", pero lo acorté sin ver el nuevo significado :) ** Componente ** es, sin embargo, un término más preciso. –

Cuestiones relacionadas