- CharToString
- CharArrayToString
- CharArrayToStruct
- StructToCharArray
- ColorToARGB
- ColorToPRGB
- ColorToString
- DoubleToString
- EnumToString
- IntegerToString
- ShortToString
- ShortArrayToString
- TimeToString
- NormalizeDouble
- StringToCharArray
- StringToColor
- StringToDouble
- StringToInteger
- StringToShortArray
- StringToTime
- StringFormat
ColorToPRGB
Преобразует тип color в тип uint для получения premultiplied ARGB-представления цвета — PRGB. PRGB формат цвета используется при создании графического ресурса, вывода текста и в классе стандартной библиотеки CCanvas с форматом цвета COLOR_FORMAT_ARGB_RAW (компоненты не обрабатываются терминалом и должны быть корректно подготовлены пользователем).
uint ColorToPRGB(
|
Параметры
clr
[in] Значение цвета в переменной типа color.
alpha
[in] Значение альфа-канала, для получения цвета в формате ARGB. Задается значением от 0 (цвет накладываемого пикселя совсем не меняет отображения нижележащего пикселя) до 255 (цвет накладывается полностью и перекрывает собою цвет нижележащего пикселя). Прозрачность цвета в процентом выражении вычисляется как (1-alpha/255)*100%, то есть чем меньше значение альфа-канала, тем более прозрачен цвет.
Возвращаемое значение
Представление цвета в формате ARGB, где в четырех байтах типа uint прописаны по порядку значения Alfa, Red, Green, Blue (альфа-канал, красный, зеленый, голубой).
Примечание
Чем PRGB отличается от ARGB?
Существуют два распространенных представления RGBA-цвета с альфа-каналом:
- straight (обычное) ARGB — RGB хранятся “как есть”, альфа отдельно;
- premultiplied (PRGB) — RGB уже умножены на альфу.
Режим COLOR_FORMAT_ARGB_RAW предполагает, что цветовые компоненты уже корректно подготовлены и терминал их не “нормализует/не пересчитывает”. Поэтому в сценариях, где ожидается premultiplied-цвет, нужно передавать именно PRGB, иначе возможны визуальные артефакты/несовпадения при отрисовке.
PRGB цвет вычисляется по формуле:
R = R * A / 255
G = G * A / 255
B = B * A / 255
A = A
Особые случаи:
- при alpha = 255 результат совпадает с ColorToARGB(clr,255) (предумножение не меняет RGB);
- при alpha = 0 результат становится 0x00000000 (полностью прозрачный пиксель, RGB = 0).
Пример:
//+------------------------------------------------------------------+
|
Смотри также
Ресурсы, ColorToARGB, ResourceCreate(), TextOut(), Тип color, Типы char, short, int и long