ColorToARGB

A função converte o tipo color em tipo uint para obter a representação ARGB da cor. O formato de cor ARGB é usado para gerar recurso gráfico, exibição de texto, assim como a classe da biblioteca padrão CCanvas.

uint  ColorToARGB(
   color  clr,          // converte color em formato de cor
   uchar  alpha=255     // canal alfa para gerenciamente da transparência de cor
   );

Parâmetros

clr

[in]  Valor da cor em variável de tipo color.

alpha

[in]  O valor do canal alfa usado para receber a cor em formato ARGB. O valor pode ser definido de 0 (uma cor de um pixel de primeiro plano não altera a exibição de um pixel subjacente) até 255 (uma cor de um pixel subjacente é completamente substituída pela cor do pixel do primeiro plano). Transparência de cor em termos de percentagem é calculada como (1-alpha/255)*100%. Em outras palavras, quanto menor o valor de canal alfa, mais transparente é a cor.

Valor de retorno

Apresenta a cor em formato ARGB onde os valores Alfa, Red, Green, Blue (canal alfa, vermelho, verde, azul) são definidos em séries de quatro bytes de tipo uint.

Observação

RGB é um formato básico e comumente usado para descrever cor de pixel em uma tela em gráficos de computador. Nomes de cores básicas são usadas para atribuir componentes de cor vermelho, verde e azul. Cada componente é descrito por um byte especificando a saturação de cor em uma faixa de 0 a 255 (0x00 a 0XFF formato hexadecimal). Já que a cor branca contém todas as cores, ela é descrita como 0xFFFFFF, ou seja, cada um dos três componentes está presente pelo valor máximo de 0xFF.

Entretanto, algumas tarefas requerem especificar a transparência da cor para descrever a aparência de uma imagem no caso dela ficar coberta, através de uma cor com algum grau de transparência. O conceito de canal alfa é introduzido para tais casos. Ele é implementado como componente adicional do formato RGB. A estrutura do ARGB é mostrado abaixo.

ARGB

Valores ARGB são tipicamente expressos usando formato hexadecimal com cada par de dígitos representando os valores dos canais Alpha, Green, e Blue, respectivamente. Por exemplo, a cor 80FFFF00 representa 50.2% amarelo opaco. Inicialmente, 0x80 define valor alfa de 50.2%, uma vez que é 50.2% de valor 0xFF. Então, o primeiro par FF define o valor mais alto do componente vermelho; o próximo par FF é como o anterior mas para o componente verde; e par final 00 representa o valor mais baixo do componente azul que pode haver (ausência de azul). Combinação de cores verde e vermelha resultam na cor amarela. Se o canal alfa não for usado, a entrada pode ser reduzida para 6 RRGGBB dígitos, é por isso que os valores de canal alfa são armazenados nos bits de topo do tipo inteiro uint.

Dependendo do contexto, dígitos hexadecimais podem ser escritos com o prefixo '0x' ou '#', por exemplo, 80FFFF00, 0x80FFFF00 ou #80FFFF00.

 

Exemplo:

//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- define transparência
   uchar alpha=0x55;  // 0x55 significa 55/255=21.6 % de transparência
   //--- fazer conversão de ARGB para cor clrBlue
   PrintFormat("0x%.8X - clrBlue",clrBlue);
   PrintFormat("0x%.8X - clrBlue ARGB com alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alpha));
   //--- fazer conversão de ARGB para cor clrGreen
   PrintFormat("0x%.8X - clrGreen",clrGreen);
   PrintFormat("0x%.8X - clrGreen ARGB com alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,alpha));
   //--- fazer conversão de ARGB para cor clrRed
   PrintFormat("0x%.8X - clrRed",clrRed);
   PrintFormat("0x%.8X - clrRed ARGB com alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alpha));
  }

Também Veja

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