FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index Utilities / Utilidades Colores brillante, o no
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Colores brillante, o no
Posted: Sat Jun 08, 2024 09: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 (fw): Select all Collapse
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
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Colores brillante, o no
Posted: Sat Jun 08, 2024 09:14 AM
He aquí un ejemplo:

Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Colores brillante, o no
Posted: Sat Jun 08, 2024 09: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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Colores brillante, o no
Posted: Sat Jun 08, 2024 12:06 PM
Muy bonito y muy profesional! :-)

Gracias por compartirlo!
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Colores brillante, o no
Posted: 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
Posts: 318
Joined: Fri Jan 14, 2022 08:37 AM
Re: Colores brillante, o no
Posted: Fri Jun 14, 2024 04: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

Continue the discussion