我在我的应用程序中使用PNG图像作为主要图像资源。由于我使用Delphi 7,我下载了PNGImage lib并将其包含在项目中。我加载这样的图像:
Form.image.Picture.LoadFromFile(PAnsiChar('\background.png'));
图像边框上有透明和半透明像素。我得到的问题是透明像素填充了我桌面的随机缩放部分与当前打开的窗口,而我希望看到实际位于窗体下面。
此外,表单具有以下属性:
BorderStyle: bsNone;
TransparentColor: true;
Visible: false;
这是当前状态(黑线以上)和所需的图片:
这可以以某种方式修复,或者delphi是如何处理透明度的?
答案 0 :(得分:1)
要有形式"阴影"它下面的内容是什么,使用表单AlphaBlend
和AlphaBlendValue
属性。 .png图像不必部分(alpha混合)透明,但它可以是。
如果您希望表单是半透明的,则使用Alphablending,这是Windows的限制。此外,您可以使某种颜色完全透明。在下面的示例中,表单颜色为clGray,除了Transparent color
属性设置为Transparent
之外,还定义为True
属性。对齐alClient
的图片是50%透明的,放置在设置为透明的TImage
上,但即便如此,它也不会显示为半透明,除非你有AlphaBlending on 。同样,这是Windows的限制。您可以做的最好的事情是尝试使用相当高的AlphaBlendingValue
(240..250)值和一个相当清晰的图像来找到正确的折衷方案。