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" 位于其下方,请使用表格 AlphaBlend
和 AlphaBlendValue
属性。 .png 图像不必部分(alpha 混合)透明,但可以。
如果您希望表单是半透明的,您可以使用 Alphablending,这是 Windows 的限制。另外你可以让某种颜色完全透明。在下面的示例中,表单颜色是 clGray,除了 Transparent
属性 设置为 True
之外,它还被定义为 Transparent color
属性。对齐 alClient
的图像是 50% 透明的,放置在设置为透明的 TImage
上,但即便如此,它也不会显示为半透明,除非您启用了 AlphaBlending。同样,这是 Windows 的限制。您可以做的最好的事情就是尝试使用相当高的 AlphaBlendingValue
(240..250) 值和相当轻的图像来找到正确的折衷方案。
我在我的应用程序中使用 PNG 图像作为主要图像资源。由于我使用 Delphi 7,我下载了 PNGImage 库并将其包含在项目中。我这样加载图片:
Form.image.Picture.LoadFromFile(PAnsiChar('\background.png'));
图像的边框有透明和半透明像素。我遇到的问题是,透明像素充满了我当前打开的桌面的随机缩放部分 windows,而我希望看到实际位于表格下方的内容。
此外,表单具有以下属性:
BorderStyle: bsNone;
TransparentColor: true;
Visible: false;
这是当前状态(黑线上方)和期望的图片:
这可以以某种方式解决吗?还是 delphi 处理透明度的方式?
要让表格 "shade" 位于其下方,请使用表格 AlphaBlend
和 AlphaBlendValue
属性。 .png 图像不必部分(alpha 混合)透明,但可以。
如果您希望表单是半透明的,您可以使用 Alphablending,这是 Windows 的限制。另外你可以让某种颜色完全透明。在下面的示例中,表单颜色是 clGray,除了 Transparent
属性 设置为 True
之外,它还被定义为 Transparent color
属性。对齐 alClient
的图像是 50% 透明的,放置在设置为透明的 TImage
上,但即便如此,它也不会显示为半透明,除非您启用了 AlphaBlending。同样,这是 Windows 的限制。您可以做的最好的事情就是尝试使用相当高的 AlphaBlendingValue
(240..250) 值和相当轻的图像来找到正确的折衷方案。