- CharToString
- CharArrayToString
- CharArrayToStruct
- StructToCharArray
- ColorToARGB
- ColorToPRGB
- ColorToString
- DoubleToString
- EnumToString
- IntegerToString
- ShortToString
- ShortArrayToString
- TimeToString
- NormalizeDouble
- StringToCharArray
- StringToColor
- StringToDouble
- StringToInteger
- StringToShortArray
- StringToTime
- StringFormat
ColorToPRGB
Converte o tipo color para o tipo uint para obter a representação premultiplied ARGB da cor, isto é, PRGB. PRGB O formato de cor é usado ao criar recurso gráfico, saída de texto e na classe da biblioteca padrão CCanvas com o formato de cor COLOR_FORMAT_ARGB_RAW (os componentes não são processados pelo terminal e devem ser corretamente preparados pelo usuário).
uint ColorToPRGB(
|
Parâmetros
clr
[in] Valor da cor em uma variável do tipo color.
alpha
[in] Valor do canal alfa, para obter a cor no formato ARGB. É definido por um valor de 0 (a cor do pixel sobreposto não altera em nada a exibição do pixel subjacente) até 255 (a cor é aplicada totalmente e cobre a cor do pixel subjacente). A transparência da cor em porcentagem é calculada como (1-alpha/255)*100%, ou seja, quanto menor o valor do canal alfa, mais transparente é a cor.
Valor retornado
Representação da cor no formato ARGB, em que, nos quatro bytes do tipo uint, são gravados em ordem os valores Alfa, Red, Green, Blue (canal alfa, vermelho, verde, azul).
Observação
Em que o PRGB difere do ARGB?
Existem duas representações comuns de uma cor RGBA com canal alfa:
- straight (normal) ARGB, o RGB é armazenado "como está", e o alfa separadamente;
- premultiplied (PRGB), o RGB já foi multiplicado pelo alfa.
O modo COLOR_FORMAT_ARGB_RAW pressupõe que os componentes de cor já estejam corretamente preparados e o terminal não os "normaliza/não recalcula". Portanto, em cenários em que se espera uma cor premultiplied, é preciso passar exatamente PRGB; caso contrário, podem ocorrer artefatos visuais/divergências na renderização.
A cor PRGB é calculada pela fórmula:
R = R * A / 255
G = G * A / 255
B = B * A / 255
A = A
Casos especiais:
- quando alpha = 255, o resultado coincide com ColorToARGB(clr,255) (a pré-multiplicação não altera o RGB);
- quando alpha = 0, o resultado se torna 0x00000000 (pixel totalmente transparente, RGB = 0).
Exemplo:
//+------------------------------------------------------------------+
|
Veja também
Recursos, ColorToARGB, ResourceCreate(), TextOut(), Tipo color, Tipos char, short, int e long