delphi Web格式与TColor类型的转换函数


支持#RRGGBB样式的Web字符串颜色格式的颜色值和TColor之间进行相互转换,从Web颜色格式转换为TColor类型的值时,支持省略前面的#号。

type
TRGBAColor = record
case Integer of
0:
(Red, Green, Blue, Alpha: Byte);
1:
(Color: TColor);
end;
//从TColor到Web颜色格式
function FormatWebColor(AColor: TColor): String;
var
 ARef: TRGBAColor absolute AColor;
begin
Result := '#' + IntToHex(ARef.Red, 2) + IntToHex(ARef.Green, 2) +
 IntToHex(ARef.Blue, 2);
end;

//从Web颜色格式转换为TColor
function FromWebColor(const S: String): TColor;
var
 p: PWideChar;
 R, G, B: Integer;
begin
p := PWideChar(S);
if p^ = '#' then
 Inc(p);
Result := clNone;
if TryStrToInt('$' + Copy(p, 0, 2), R) then
 begin
 Inc(p, 2);
 if TryStrToInt('$' + Copy(p, 0, 2), G) then
 begin
 Inc(p, 2);
 if TryStrToInt('$' + Copy(p, 0, 2), B) then
 Result := RGB(R, G, B);
 end;
 end;
end;
用法当然足够简单,如 FromWebColor(‘#FF0000′)直接就是红色,FormatWebColor(clRed)得到的结果就是字符串#FF0000。

联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678