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

3
我正在为Firemonkey重写我旧游戏,原本是用Delphi 2010编写的。那时使用TImage.Transparent := true使游戏元素的背景透明很容易,但在Firemonkey中我发现这并不容易。我了解到,在设计时可以轻松设置TransparentColor,然后对象的背景就像您想要的那样透明,但如何在运行时实现呢?我创建了许多动态TImage对象,作为游戏中的元素,并且需要它们有透明的背景。有谁能帮助我吗?提前感谢。
3个回答

3

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;


很棒的回答,谢谢!真的非常感谢你花时间向我解释这个。 - hastubb

2
您可以在加载位图图像(具有白色背景的位图)之前,使用MultiResBitmap编辑器更改图像的简单背景颜色并选择它: enter image description here 或者将真正的透明度添加到图像并将其转换为PNG。如果您加载带有透明度的PNG,则编辑器会完美显示它。 enter image description here 祝好。

将图像转换为PNG格式,这样事情就变得容易多了 :) 谢谢。 - hastubb

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接