怎样将RGB(r,g,b)的值转换为HTML格式的颜色值(<font color=rgb(r,g,b)>)?(50分)

  • 主题发起人 主题发起人 kek
  • 开始时间 开始时间
var t : tcolor;
r,g,b : byte;
begin
r := getRvalue(t);
g := getGvalue(t);
B := getBvalue(t);
LABEL1.CAPTION := '$00' + HEXB(R) + HEXB(G) + HEXB(B);
end;

这个是么?
 
function HexB(B : Byte) : string;//Delphi5
begin
HexB:=Digits[B shr 4]+Digits[B and $F];
end;


function HexB(B : Byte) : string;//Delphi4
begin
HexB[0] := #2;
HexB[1] := Digits[B shr 4];
HexB[2] := Digits[B and $F];
end;
 
再加上wjiachun的HEXB(R) + HEXB(G) + HEXB(B);
 
呵呵,这回全了
 
不,漏了:)
const
Digits : array[0..$F] of Char = '0123456789ABCDEF';
 
function HexB(B : Byte) : string;//Delphi4
begin
HexB[0] := #2;
HexB[1] := Digits[B shr 4];
HexB[2] := Digits[B and $F];
end;

这个HexB[0] 编译不能通过,我的 D4 有问题?
 
function HexB(B : Byte) : string;
那么 HEXB 返回值就是 string 类型,所以不能用 HEX[0]的
 
你们的程序是将r,g,b转换成16进制吗?
那就对啦

RED = RGB(255,0,0) = #FF0000
 
呵,好热闹! 轻轻的偷听......
 
为什么不直接用inttohex(t, 6)?
 
呵呵,这个问题我也用到过。主要是Delphi的颜色数值的位排列顺序是BGR而HTML则是RGB。
可以使用以下函数对其进行转换。
function MyColorToRGB(Color:TColor):integer;
var
i:integer;
myrgb:array[0..2] of BYTE;
begin
for i:=0 to 2 do
begin
myrgb:=Color and $ff;
Color:=Color shr 8;
end;
Result:=RGB(myrgb[2],myrgb[1],myrgb[0]);
end;
 
多人接受答案了。
 
后退
顶部