- CharToString
- CharArrayToString
- CharArrayToStruct
- StructToCharArray
- ColorToARGB
- ColorToPRGB
- ColorToString
- DoubleToString
- EnumToString
- IntegerToString
- ShortToString
- ShortArrayToString
- TimeToString
- NormalizeDouble
- StringToCharArray
- StringToColor
- StringToDouble
- StringToInteger
- StringToShortArray
- StringToTime
- StringFormat
ColorToPRGB
将类型 color 转换为类型uint 以获得 ARGB 颜色表示的预乘形式 - PRGB。PRGB 颜色格式在创建图形资源,文本输出和标准库中的 CCanvas 类时以COLOR_FORMAT_ARGB_RAW (组成不是由终端处理的,必须由用户正确准备)为参数时使用。
uint ColorToPRGB(
|
参数
clr
[in] color 类型的颜色值。
alpha
[in] alpha 通道的值,以获得ARGB格式的颜色。它的值可设置为从 0(叠加像素的颜色根本不会改变底层像素的显示)到 255(颜色完全叠加并与底层像素的颜色重叠)。以百分比表示的颜色透明度计算为(1-alpha/255)*100%,即 alpha 通道值越低,颜色越透明。
返回值
ARGB 格式的颜色表示,其中四个字节的 uint 类型包含值 Alpha、Red、Green、Blue(alpha 通道、红色、绿色、蓝色)。
请注意
PRGB 与 ARGB 有何不同?
RGBA 颜色有两种常见的 alpha 通道表示方式:
- 直接(正常)ARGB - RGB 按“原样”存储,alpha 单独存储;
- 预乘(PRGB)- RGB 已经乘以 alpha。
模式COLOR_FORMAT_ARGB_RAW假设颜色分量已经正确准备,终端不会“归一化/重新计算”它们。因此,在预期预乘颜色的场景中,应该传递 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 类型