Delphi PNGImage - 图片透明度不纯

Delphi PNGImage - Image transparency is not pure

我在我的应用程序中使用 PNG 图像作为主要图像资源。由于我使用 Delphi 7,我下载了 PNGImage 库并将其包含在项目中。我这样加载图片:

Form.image.Picture.LoadFromFile(PAnsiChar('\background.png'));

图像的边框有透明和半透明像素。我遇到的问题是,透明像素充满了我当前打开的桌面的随机缩放部分 windows,而我希望看到实际位于表格下方的内容。

此外,表单具有以下属性:

BorderStyle: bsNone; TransparentColor: true; Visible: false;

这是当前状态(黑线上方)和期望的图片:

这可以以某种方式解决吗?还是 delphi 处理透明度的方式?

要让表格 "shade" 位于其下方,请使用表格 AlphaBlendAlphaBlendValue 属性。 .png 图像不必部分(alpha 混合)透明,但可以。


如果您希望表单是半透明的,您可以使用 Alphablending,这是 Windows 的限制。另外你可以让某种颜色完全透明。在下面的示例中,表单颜色是 clGray,除了 Transparent 属性 设置为 True 之外,它还被定义为 Transparent color 属性。对齐 alClient 的图像是 50% 透明的,放置在设置为透明的 TImage 上,但即便如此,它也不会显示为半透明,除非您启用了 AlphaBlending。同样,这是 Windows 的限制。您可以做的最好的事情就是尝试使用相当高的 AlphaBlendingValue (240..250) 值和相当轻的图像来找到正确的折衷方案。