我在尝试将4字节十六进制格式颜色转换为RGB格式时遇到问题,最大的问题是4字节十六进制颜色的两个第一个字符,我不知道如何转换它.所以我有这个十六进制:$16750899并希望转换格式RGB(0..255,0..255,0..255)
将十六进制字符串转换为如下数值:
var
Color: Integer;
....
Color := StrToInt(str);
Run Code Online (Sandbox Code Playgroud)
您的值有四个通道,因此假设第四个通道是alpha.挑选出用颜色通道GetRValue,GetGValue和GetBValue.像这样获取alpha通道:
function GetAValue(rgba: Integer): Byte;
begin
Result := Byte(rgb shr 24);
end;
Run Code Online (Sandbox Code Playgroud)
或者您可以像这样一次解压缩它们:
procedure ExtractColorChannels(rgba: Integer; out r, g, b, a: Byte);
begin
r := Byte(rgba);
g := Byte(rgba shr 8);
b := Byte(rgba shr 16);
a := Byte(rgba shr 24);
end;
Run Code Online (Sandbox Code Playgroud)
然后你可以写:
var
r, g, b, a: Byte;
....
ExtractColorChannels(StrToInt(str), r, g, b, a);
Run Code Online (Sandbox Code Playgroud)
输入'$16750899'此信息会产生以下渠道:
Alpha: $16 Blue: $75 Green: $08 Red: $99
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |