Image DelphiXe5 Firemonkey-如何在运行时使图像背景透明?

Image DelphiXe5 Firemonkey-如何在运行时使图像背景透明?,image,delphi,runtime,transparent,firemonkey,Image,Delphi,Runtime,Transparent,Firemonkey,我正在为Firemonkey改写我的一个老游戏,最初是用Delphi 2010编写的。在那些日子里,使用TImage使游戏背景透明是很容易的。transparent:=真的,但在Firemonkey中,我觉得这并不容易。我了解到,designtime允许您轻松设置透明颜色,然后对象背景就像您希望的那样透明,但如何在运行时实现这一点?我正在创建许多动态的TImage对象,在游戏中充当棋子,显然需要它们有透明的背景。有人能帮我吗?提前感谢。Yoy可以更改图像的背景色(简单颜色),并在加载bipmap

我正在为Firemonkey改写我的一个老游戏,最初是用Delphi 2010编写的。在那些日子里,使用TImage使游戏背景透明是很容易的。transparent:=真的,但在Firemonkey中,我觉得这并不容易。我了解到,designtime允许您轻松设置透明颜色,然后对象背景就像您希望的那样透明,但如何在运行时实现这一点?我正在创建许多动态的TImage对象,在游戏中充当棋子,显然需要它们有透明的背景。有人能帮我吗?提前感谢。

Yoy可以更改图像的背景色(简单颜色),并在加载bipmap图像(背景为白色的位图)之前在MultiResBitmap编辑器中选择:

或者向图像添加真实透明度并将其转换为PNG。 如果你加载一个PNG,编辑器会对它进行完美的充电


注意。

FireMonkey图像使用32位/像素模式,其中红色、绿色和蓝色各8位,另外8位用于透明度,也称为alpha通道。如果alpha通道的值为#FF,则像素将是不透明的,#00将是完全透明的,介于两者之间的值将相应地改变透明度

因此,FireMonkey中的颜色(实际上是TAlphaColor)可以设置为8位十六进制数,其中位映射到#AARRGGBB,其中AA是透明度/alpha通道

因此,#FF00FF00为不透明绿色,#88FF0000为半透明红色。前两位数字为#00的任何颜色值应完全透明

FireMonkey includes是预定义的恒定色系,颜色完全透明

您还可以使用TAlphaColorRec记录访问TAlphaColor变量的各个颜色,使用其字段a、R、G和B

红色:=TAlphaColorRec(MyColour).R


TAlphaColorRec(MyColour).A:=#00

我在这里给出了一个可能解决这个问题的代码答案。它是用XE5的C++,但是我想转换成Delphi应该相当简单。非常感谢你花时间向我解释这一点。将图像转换为PNG,这使事情变得更容易:)谢谢。