Colores
Los colores se presentan en formato int. Por lo tanto, es necesario hacer algunas cosas complicadas para obtener un int que pueda contener los valores ARGB.
El estΓ‘ndar de los enteros de color
Cambiamos los bits para utilizar el formato TRGB. Para definir un color, lo inicializamos asi 0xTTRRGGBB, Donde cada carΓ‘cter representa lo siguiente:
Letra | Descripcion | Ejemplo |
---|---|---|
T | Transparencia | |
R | Componente rojo | 0x00FF0000 |
G | Componente Verde | 0x0000FF00 |
B | Componente Azul | 0x000000FF |
Podemos utilizar dos mΓ©todos para codificar y decodificar los colores:
BitShifting
char/int conversion
BitShifting
Dado que cada byte contiene 2^8 = 256 valores (1 byte = 8 bits), y que los valores RGB van de 0 a 255, nos cabe perfectamente un entero (ya que un int son 4 bytes). Para establecer los valores de forma programada utilizamos el desplazamiento de bits. Es decir que un int nos entra perfectamente la combinacion de estos 4 bytes que representan un color.
Para ello utilizaremos la siguiente funcion que nos junta los 4 parametros en un solo integrer, es decir una funcion que nos haga la combinacion de colores:
Esta fucnion lo que hace es superponer los 4 int en uno solo, creando una combinacion de sus bites, mediante el operador de bites ( | ). Sin emabrgo antes de ralizar la comparacion para la superposicon de los bits, tenemos que desplazarlos a sus posicones correspondiente para asi a la hora de juntarlos no se superponga uno encima del otro
EL byte de trasparencia (T) esta al final del todo, por lo que habra que desplazarlo 24 posiciones hacia la izquierda
El byte del rojo (R) habra que despalzarlo 16 bites
El byte del Verde (G) habra que despalzarlo 8 bites
El byte del azul (B) al ser el ultimo byte, no es necesario depalzarlo
Como puedes ver los desplaamos en 8 en 8, que son los bites que ocupan un byte.
En el caso de que queramos separa la union de estos colores en los 4 parametros (TRGB) habra que utilizar las siguientes funciones:
Estas funciones lo que hacen es comparar el byte correspondiente de cada color con una mascara de zero (0xFF) y de esta manera eliminar los valores sobrantes a nuestro color.
Para que quede mas claro este concepto lo esta explicado en el siguiente vido:
Last updated