Delphi中的HEX到RGB

时间:2017-03-02 22:39:55

标签: delphi

我需要有关如何将HTML HEX颜色值转换为RGB然后将RGB值作为字符串输出到标签/编辑的任何解决方案。因此,例如,如果输入是#FFFFFF,则输出将为255,255,255。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

问题(问题有所缩短)

  

我需要HEX颜色值来标记/编辑-color。例如#FFFFFF输出   将是255,255,255。

如果我正确理解了这个问题,你想为TEdit.Color指定一个html十六进制值,如#662233

Delphi Edit1.Colorlabel1.Color无法直接处理255,255,255。

所以你需要一个 $ Hex字符串,比如$ 00662233。

这里有一个简短的功能如何。
必须验证Edit1的Input值: 而不是TLabel我使用TPanel 如果您使用VCL主题

,则需要进行特殊设置
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Panel1: TPanel;
    Conv: TButton;
    procedure ConvClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ConvClick(Sender: TObject);
const
zeroV = '00000000';
begin
Edit1.Text  := StringReplace(Edit1.Text,'#','',[rfReplaceAll]);
Edit2.Text  := '$'+Copy(zeroV,1,8-Length(Edit1.Text))+Edit1.Text;
Panel1.Color := StrToInt(Edit2.Text);
end;

enter image description here

<强>更新
如果你想简单地将hex转换为rgb,请使用它。

procedure TForm1.RGBBtClick(Sender: TObject);
begin
Edit1.Text  := StringReplace(Edit1.Text,'#','',[]);
(* The HTML order *)
Edit2.Text  := IntToStr(StrToInt('$'+Copy(Edit1.Text,1,2)))+','+
               IntToStr(StrToInt('$'+Copy(Edit1.Text,3,2)))+','+
               IntToStr(StrToInt('$'+Copy(Edit1.Text,5,2)));
(* or Reversed the Delphi order
Edit2.Text  := IntToStr(StrToInt('$'+Copy(Edit1.Text,5,2)))+','+
               IntToStr(StrToInt('$'+Copy(Edit1.Text,3,2)))+','+
               IntToStr(StrToInt('$'+Copy(Edit1.Text,1,2)));
*)
end;

您将获得德尔福订单 #35358B

<强> 139,53,53

从颜色选择器中查看图像 您将在RGB字段中看到相同的值。

或HTML命令是(在35358B字段下面)
#8B3535

所以不要混淆这个!
如果你想在Delphi中使用html颜色代码来获得组件颜色,你必须反过来使用Html颜色代码。

Html Color Codes