delphi 从RGB值创建TAlphaColor的最简单方法是什么?

wixjitnu  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(223)

从单个R、G、B整数值创建TAlphaColor的最简单方法是什么?
我知道两种方法。在下面,假设rgb是整数0->255:

rec : TAlphaColorRec
color : TAlphaColor;

rec.A := 255;
rec.R := r;
rec.B := b;
rec.G := g;
color := rec.Color;
color := TAlphaColorF.Create(r/255, g/255, b/255).ToAlphaColor;

前者显得冗长,后者显得矫枉过正。我想可能有一个函数,如以下所示,但似乎没有:

color = TAlphaColor.RGBToColor (r,g,b,1)

是否有其他方法可以从R、G、B值创建TAlphaColor

fumotvh3

fumotvh31#

你所拥有的基本上就是它。但是,你不需要一个单独的TAlphaColorRec变量,你可以对TAlphaColor变量进行类型转换来访问它的组件,例如:

var color : TAlphaColor;
TAlphaColorRec(color).A := 255;
TAlphaColorRec(color).R := r;
TAlphaColorRec(color).B := b;
TAlphaColorRec(color).G := g;

这正是TAlphaColorF.ToAlphaColor在其Result内部所做的:

function TAlphaColorF.ToAlphaColor: TAlphaColor;
begin
  TAlphaColorRec(Result).R := Round(R * 255);
  TAlphaColorRec(Result).G := Round(G * 255);
  TAlphaColorRec(Result).B := Round(B * 255);
  TAlphaColorRec(Result).A := Round(A * 255);
end;

相关问题