¿Alguien sabe cómo obtener colores aleatoriamente? - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: General (https://gambas-es.org/forum-4.html) +--- Tema: ¿Alguien sabe cómo obtener colores aleatoriamente? (/thread-1905.html) Páginas:
1
2
|
¿Alguien sabe cómo obtener colores aleatoriamente? - Shordi - 27-03-2025 Para una cosita que estoy haciendo necesito conseguir un array de colores, es decir un array de integer, de longitud indeterminada. Quiero decir que sólo en tiempo de ejecución se sabe cuántos. Deberían ser distintos... y bonitos. es cierto que tomando números al azar salen colores... pero son terribles. ¿Alguien tiene alguna idea? Saludos RE: ¿Halguien sabe cómo obtener colores aleatoriamente? - tincho - 27-03-2025 podes usar una lista de colores agradables, yo tengo una lista que puede servir, la busco y te la paso mira aca: https://thecolorsmeaning.com/ral-colors/ https://en.wikipedia.org/wiki/List_of_RAL_colours RE: ¿Halguien sabe cómo obtener colores aleatoriamente? - Grandamakulo - 28-03-2025 Hola, no sé si esto servirá. Genera una matriz de tamaño definido por una variable de pares de colores legibles de tinta y papel. También añado una función que busca color contrastante a partir de uno dado —es decir, busca un par que sea legible con el primero para conseguir parejas papel tinta, eso, legibles—. Por supuesto, con mi estilo barrocofarragosolioso: Código: Public Function aiBuscaParColor(iNum As Integer, iOpcion As Integer) As Integer[] Código: Public Function iTintaxContraste(Colorfondo As Integer, booTotal As Boolean) As Integer También se pueden hacer escalas sobre determinado tono a elegir o una serie de colores temáticos, p.e. complementarios —los complementarios están a 180º, pero se puede dividir en tantos intervalos como se quiera—. En fin, ya dirás. Edito para poner ejemplos de las cinco opciones que tiene: ![]() ![]() ![]() ![]() ![]() RE: ¿Halguien sabe cómo obtener colores aleatoriamente? - Grandamakulo - 28-03-2025 Ejemplo a partir de un violeta. se pueden obtener tonos «sombra» —bien con HSV o con Darker / Lighter—, o también tonos del círculo de colores. Si me dices qué necesitas exactamente, lo vemos. ![]() ![]() —Ejemplos de https://colorizer.org/ — RE: ¿Halguien sabe cómo obtener colores aleatoriamente? - Shordi - 28-03-2025 Gracias Tincho. Grandamakulo me ha dado la solución. La función que me genera colores aleatorios queda así: Código: Public Function genColors(iNum As Integer) As Integer[] Pero no es oro todo lo que reluce. Después de darle muchas vueltas no he encontrado la manera de que los colores que se generen no sean parecidos unos a otros. Al final he recurrido un poco a la cuenta de la vieja y en última instancia a la función de arriba. Lo que he hecho ha sido: 1.- Generar manualmente un array de 25 colores distintos (en realidad los que tiene la clase Color descartando los Dark* que no me valen para lo que quiero. 2.- Si el número de colores es mayor de 25, se incrementa el array con los colores resultantes de mezclar cada color con el color blanco en una proporción de 0.7. 3.- Si aún así el número de colores que se solicita es mayor de 50, se recurre a la función citada más arriba hasta que se complete el array. El objetivo de esta función es generar barras de colores aleatorios para un control que genera gráficas para estadísticas, por lo que será difícil, en principio llegar al punto 3 de que haya más de 50 barras en la gráfica. Os adjunto un pequeño proyecto de demo por si a alguien le interesa. Saludos RE: ¿Alguien sabe cómo obtener colores aleatoriamente? - tincho - 28-03-2025 si es para graficas tambien pueden jugar un papel los degradados o patrones de dibujo, lineas etc. RE: ¿Alguien sabe cómo obtener colores aleatoriamente? - Shell - 29-03-2025 Entendí que quieres colores al azar, pero que sean bonitos y sobre gustos ya me pierdo. He creado un ejemplo que recuerda algo que hice ya tiempo. ![]() Aprovecha el evento move dentro del DrawingArea y donde se pose muestra la gama de colores. Cada vez que se le da a Dibujar Cuadrados, generará un nuevo grupo de cuadrados coloreados. Aunque los colores se puedan parecer no hay dos iguales. Se puede jugar con las constantes para cambiar el número de cuadrados, el margen de separación y el tamaño del lado. Pero claro sin pasarse. ![]() Se pueden hacer más cosas con los colores, pero por ahora solo pude hacer esto. Saludos RE: ¿Alguien sabe cómo obtener colores aleatoriamente? - Shell - 29-03-2025 Así quedan más chulos. ![]() RE: ¿Alguien sabe cómo obtener colores aleatoriamente? - Shordi - 29-03-2025 Gracias Shell, tu solución también sirve... pero adolece del mismo problema: puede que no sean iguales pero se generan colores indistinguibles con números de rojo, verde y azul muy dispares. Al final usaré la solución que subí más arriba y en lugar de obtenerlos al azar los obtendré en secuencia, de manera que la primera columna siempre tendrá el mismo color, la segunda igual, etc.... y sólo si son más de 50 variarán los colores. Saludos RE: ¿Alguien sabe cómo obtener colores aleatoriamente? - Shell - 29-03-2025 Shordi: ¿ Cómo deben ser los colores que quieres ?. Solo generé colores al azar. ¿ Podrías mostrar un ejemplo gráficamente y describirlo ? Es que cuando dijiste colores chulos, me quedé un poco a cuadros. ¿ Y cuáles son esos ?. ![]() Desde luego encontrar una buena combinación de colores que no dañe los ojos, es complicado. Este es un ejemplo imitando los colores RAL; FMain: Código: Public Sub Form_Open() Modulo RAL: Código: 'Definición de constantes para algunos colores RAL (con sus equivalentes RGB) Saludos |