我正在为Firemonkey重写我旧游戏,原本是用Delphi 2010编写的。那时使用TImage.Transparent := true使游戏元素的背景透明很容易,但在Firemonkey中我发现这并不容易。我了解到,在设计时可以轻松设置TransparentColor,然后对象的背景就像您想要的那样透明,但如何在运行时实现呢?我创建了许多动态TImage对象,作为游戏中的元素,并且需要它们有透明的背景。有谁能帮助我吗?提前感谢。
FireMonkey 图像使用每像素32位的格式,其中红色、绿色和蓝色各占8位,另外还有8位用于透明度,也称为α通道。如果α通道的值为 #FF,则像素将是不透明的;#00 将完全透明,其间的值将相应地变化。
因此,在 FireMonkey 中(实际上是一个 TAlphaColor),可以使用由8个十六进制数字组成的表示颜色,其中每一位映射到 #AARRGGBB ,AA 是透明度/α通道。
因此,#FF00FF00 表示不透明的绿色,而 #88FF0000 表示半透明的红色。任何前两个数字为 #00 的颜色值都将完全透明。
FireMonkey 包含预定义常量 claNull,表示完全透明的颜色。
您还可以使用 TAlphaColorRec 记录来访问 TAlphaColor 变量的各个颜色,使用它的字段 A、R、G 和 B。例如:
Red := TAlphaColorRec(MyColour).R;
TAlphaColorRec(MyColour).A := #00;
我在这里提供了一个代码答案是否有一种FMX函数可以在运行时设置TImage的透明颜色?,可能可以解决这个问题。它是用XE5的C++编写的,但我想转换到Delphi应该相当简单。