ColorToARGB

Esta función convierte el tipo color al tipo uint para conseguir la representación de color ARGB. El formato de color ARGB se utiliza durante la creación de recursos gráficos, visualización del texto y en la clase de la biblioteca estándar CCanvas.

uint  ColorToARGB(
   color  clr,          // color en el formato color para convertir
   uchar  alpha=255     // composición alfa que responde del grado de transparencia del color
   );

Parámetros

clr

[in]  Valor del color en la variable del tipo color.

alpha

[in]  Valor de composición alfa para obtener el color en el formato ARGB. Se puede establecer el valor de 0 (el color del píxel puesto encima no cambia en absoluto la visualización del píxel del fondo) hasta 255 (el color se pone encima íntegramente y cubre totalmente el color del píxel del fondo). La transparencia del color en términos porcentuales se calcula según la siguiente fórmula (1-alpha/255)*100%. Es decir, cuanto menor sea el valor de la composición alfa, más transparente será el color.

Valor devuelto

La representación del color en el formato ARGB, donde los valores Alfa, Red, Green, Blue (composición alfa, rojo, verde, azul) están escritos por orden en cuatro bytes del tipo uint.

Nota

RGB es el formato básico y mayoritariamente utilizado que sirve para describir el color del píxel sobre la pantalla en la computación gráfica. Los nombres de colores básicos se utilizan para establecer los componentes del color: rojo (Red), verde(Green) y azul (Blue). Cada componente se describe con un byte que establece la saturación de este color en un intervalo de 0 a 255 (de 0x00 a 0XFF en el formato hexadecimal). Puesto que el color blanco contiene todos los colores, se describe como 0xFFFFFF. O sea, cada uno de tres componentes está representado aquí con el valor máximo 0xFF.

Sin embargo, en algunas tareas se requiere la especificación de la transparencia del color con el fin de describir qué apariencia va a tener la imagen si la cubren con un color con cierto grado de transparencia. Para estas ocasiones se introduce el concepto de la composición alfa como un componente adicional al formato RGB. El esquema del formato ARGB se muestra en la figura de abajo.

ARGB

Los valores ARGB habitualmente se indican en el formato hexadecimal, donde cada par de cifras representa por orden los valores de las composiciones Alpha, Red, Green y Blue. Por ejemplo, el color-ARGB 80FFFF00 representa el amarillo con opacidad de 50,2 %. Al principio va 0x80 que establece el 50,2% de la composición alfa, ya que es un 50,2% del valor 0xFF. Luego el primer par FF representa el valor máximo del componente rojo; el siguiente par FF establece la misma intensidad del componente verde; y el último par 00 representa el mínimo valor del componente azul (ausencia del azul). La combinación del verde y el rojo produce el amarillo. Si la composición alfa no se utiliza, la entrada puede ser reducida a 6 dígitos RRGGBB. Por esa razón los valores de la composición alfa se guardan en los bits superiores del tipo de números enteros uint.

En función del contexto, los números hexadecimales pueden escribirse con el prefijo '0x' o '#', por ejemplo, 80FFFF00, o 0x80FFFF00, o #80FFFF00.

 

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- establecemos la transparencia
   uchar alpha=0x55;  // el valor 0x55 significa 55/255=21,6 % de transparencia   
   //--- obtenemos la conversión a ARGB para el color clrBlue
   PrintFormat("0x%.8X - clrBlue",clrBlue);
   PrintFormat("0x%.8X - clrBlue ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alpha));
   //--- obtenemos la conversión a ARGB para el color clrGreen
   PrintFormat("0x%.8X - clrGreen",clrGreen);
   PrintFormat("0x%.8X - clrGreen ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,alpha));
   //--- obtenemos la conversión a ARGB para el color clrRed
   PrintFormat("0x%.8X - clrRed",clrRed);
   PrintFormat("0x%.8X - clrRed ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alpha));
  }

Véase también

Recursos, ResourceCreate(), TextOut(), Tipo color, Tipos char, short, int y long