Colores brillante, o no

Colores brillante, o no

Postby antolin » Sat Jun 08, 2024 9:13 am

Buenas a todos. Hace tiempo que vuelvo por aquí, pero de vez en cuando me gusta aportar mi granito de arena.

En mis progrmas utilizo mucho color. Me gusta que mis dialogos se generen utilizando colores aleatorios para romper la monotonía y no aburrir al usuario de turno. Para ello necesitaba calcular el grado de brillo de cada color, y por eso implementé unas pequeñas funciones en C++ que a lo mejor pueden interesar a alguien:

Code: Select all  Expand view

float XBright( COLORREF nColor ) ;          // DECLARACION DE LA FUNCCION XBright


HB_FUNC( BRIGHTNESS )  //  Brightness( nColor )     // RETORNA NIVEL DE BRILLO CALCULADO
   {
   hb_retnl( XBright( ( COLORREF ) hb_parnl( 1 ) ) ) ;
   }

HB_FUNC( ISBRIGHT ) // IsBright( nColor )       // AVERIGUA SI UN COLOR ES BRILLANTE
   {
   hb_retl( XBright( ( COLORREF ) hb_parnl( 1 ) ) > 100 ) ;
   }

float XBright( COLORREF nColor )            // CALCULO DEL NIVEL DE BRILLO
   {
   return ( GetRValue(nColor)*0.299 )+( GetGValue(nColor)*0.587 )+( GetBValue(nColor)*0.114 ) ;
   }
 


Existen dos fórmulas generales para calcular el nivel de brillo, yo utilizo la más común que es la que, parece ser, más se acerca a la visión del ser humano. Si el valor es mayor que 100, entonces el color es brillante, cuanto mayor sea ese valor, más brilllante.

Por ejemplo, en un browse, para el fondo utilizaría un color muy brillante cercano al 200 o más y para la letra uno menor que 64. O, si programo un cartel con un color aleatorio para el fondo, determinar si es brillante o no para adaptar el color de la letra.

Espero que os sea de utilidad.

Saludos
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Colores brillante, o no

Postby antolin » Sat Jun 08, 2024 9:14 am

He aquí un ejemplo:

Image
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Colores brillante, o no

Postby antolin » Sat Jun 08, 2024 9:15 am

Creo colores aleatorios para el fondo dl dialogo, y después utilizo variaciones de los mismos para el resto
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Colores brillante, o no

Postby Antonio Linares » Sat Jun 08, 2024 12:06 pm

Muy bonito y muy profesional! :-)

Gracias por compartirlo!
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42065
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Colores brillante, o no

Postby antolin » Mon Jun 10, 2024 10:20 am

Gracias.

He de puntualizar que lo he implementado en C++ para mayor velocidad de proceso, pero que no es necesario, también se puede hacer sólo en FW
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Colores brillante, o no

Postby paquitohm » Fri Jun 14, 2024 4:36 pm

Hola Antolín,

No estoy seguro si se corresponde con lo que yo hice en su dia.
En mi caso dejo al usuario escoger los colores "base" del programa y en funcion de ellos muestro el mismo grado de brillo pero para el color escogido. Recuerdo que lo hice de una manera que calificaria "poco etica" por ineficiente :D
Revisare tu funcion de calculo de brillo.

Gracias por tu aporte
paquitohm
 
Posts: 257
Joined: Fri Jan 14, 2022 8:37 am


Return to Utilities / Utilidades

Who is online

Users browsing this forum: No registered users and 8 guests