如何把一个color format 成16进制表示如clWhite,format后成为FFFFFF,(5分)

  • 主题发起人 主题发起人 Boblee
  • 开始时间 开始时间
B

Boblee

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ColorToString(color:Tcolor),正如dephi帮助中说的那样:
Call ColorToString to obtain a string that represents a TColor value.
[gold]If there is a symbolic constant defined for the color (such as clBlack or clHighlightText),
ColorToString returns the name of the constant.[/gold]
Otherwise, ColorToString returns the hex value of the color, formatted as a string such as '$02FF8800'.
它不能format dephi已定义的symbolic.
有其它方法吗?
 
又是我^o^

实现如下:
function ColorToStringEx(const Color:TColor):String;
begin
Result:=IntToHex(ColorToRGB(Color),8);
end;

procedure TForm1.FormCreate(Sender:TObject);
begin
Caption:=ColorToStringEx(clHighlightText);
end;
 
牛。:)
kyq兄,这个Function确实能得到,但Result:=IntToHex(ColorToRGB(Color),8);这条句中的
8是否是误输,我把它改为了6,因为RGB的16进制表示应为6位吧。还有就是用你的Function
得到的RGB刚好换了个顺序变成了BGR。这是怎么回事。
 
Sorry, 没认真测试。
那就改成:
function ColorToStringEx(Color:TColor):String;
begin
Color:=ColorToRGB(Color);
Result:=IntToHex(
((Color and $ff0000) shr 16) or (Color and $00ff00) or ((Color and $0000ff) shl 16),
6
);
end;

如果表示RGB的话确实是6位,使用8位16进制只是和ColorToString()一致,
没什么特别意思^_^
 
后退
顶部