25 de marzo de 2016

Función para convertir colores

Artículo Original: FUNCTION TO CONVERT COLORS
http://weblogs.foxite.com/vfpimaging/2006/11/27/function-to-convert-colors
Autor: Cesar Ch.
Traducido por: Luis María Guayan


La breve función de abajo convierte cualquier color a su versión más oscura o más brillante, tal como el original ColorPicker SlideBar.

Parámetros:
  RGB     - Valor original de RGB para convertir
  tnLevel - Rango de -100 a 100. 
            Cero = Ningún cambio; 100 = Blanco; -100 = Negro; 
            los valores positivos devolverán imágenes mas 
            brillantes, mientras los valores negativos 
            devolveran imagenes mas oscuras.

LPARAMETERS tnRGB, tnLevel

IF tnLevel = 0
  RETURN tnRGB
ENDIF 

tnLevel = tnLevel / 100

LOCAL lnRed, lnGreen, lnBlue
lnRed   = BITAND(tnRGB, 0x000000FF)
lnGreen = BITRSHIFT(BITAND(tnRGB, 0x0000FF00), 8)
lnBlue  = BITRSHIFT(BITAND(tnRGB, 0x00FF0000), 16)

IF tnLevel > 0
  RETURN RGB( ;
    lnRed   + ((255 - lnRed)   * tnLevel) , ;
    lnGreen + ((255 - lnGreen) * tnLevel) , ;
    lnBlue  + ((255 - lnBlue)  * tnLevel) )
ELSE 
  RETURN RGB( ;
    lnRed   + (lnRed   * tnLevel) , ;
    lnGreen + (lnGreen * tnLevel) , ;
    lnBlue  + (lnBlue  * tnLevel) )
ENDIF

Para entender mejor como trabaja esto, puede descargar el archivo adjunto, que contiene un ejemplo simple. Haga Click en el botón "Select Color" para escoger un color y jugar con Spinner para ver los colores más oscuros y más brillantes que resultan.

Descarga: changingcolors.zip 2,37 KB

No hay comentarios. :

Publicar un comentario