简单问题:RGB的值如何转换为Tcolor的值? (50分)

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

baoling

Unregistered / Unconfirmed
GUEST, unregistred user!
RGB的值如何转换为Tcolor的值?
格式是:$00******
 
var
c:Tcolor;
R,G,B:Integer;
begin
C:=RGB(R,G,B);
end;
 
form.color:=RGB(red,green,blue)
 
象说完了吧
 
要求格式是:$00******
 
$00******不过是十六进制而已
把Red,Green,Blue 转化成十六进制,再按BGR的顺充添加到字串中.
如$00(B)(G)(R) 这样的形式.
 
好象还有一个函数ColorToString
 
我以前写了一个程序
当时写了一个函数
不过,现在那个硬盘坏了
现在懒的写
如果找到,给你贴出来
 
看了没有?应该是可以的,你可以试一下。
 
//Tcolor to RGB
procedure TForm1.Button2Click(Sender: TObject);
begin
if ColorDialog1.Execute then
begin
SpinEdit1.Value := ColorDialog1.Color and $000000FF; //R
SpinEdit2.Value := (ColorDialog1.Color and $0000FF00) shr 8 ; //G
SpinEdit3.Value := (ColorDialog1.Color and $00FF0000) shr 16 ; //B
SpinEdit4.Value := ColorDialog1.Color ; //TColor
end;
end;

//RGB To TColor
procedure TForm1.Button3Click(Sender: TObject);
begin
SpinEdit5.Value := RGB(SpinEdit1.Value, //R
SpinEdit2.Value, //G
SpinEdit3.Value ) ; //B
end;
 
给你一个代码:
RGB向Color转换:

procedure TForm1.Button4Click(Sender: TObject);
var
c_str:string;
R,G,B:Byte;
begin
c_str:='$00'+IntToHex(B,2)+IntToHex(G,2)+IntToHex(R,2);
Edit1.Text:=c_str;
end;

end.
 
rgb只不过是24位的二进制,每八个二进制是一个颜色,其实你通过此原理可以任意更改
var rgb:integer;
r,g,b:byte;
begin
b:=rgb div $FFFF;
g:=(rgb-b) div $FF;
r:=rgb div $FF;
end;
当然也可以进行逆变换!
只要你看到了实质!
 
就是一个colortostring就完了。何必费这么大劲。
 
多人接受答案了。
 
后退
顶部