0

我的主窗体上有几个 TJvImage 组件。一个是在设计时从部分透明的 PNG 文件加载的。另一个比第一个小,在它前面。它在运行时与另一个部分透明的 PNG 文件一起加载。

JvImage1.Picture.LoadFromFile ('Logo.png') ;  

JvImage1.Transparent 设置为 TRUE。问题很简单:忽略 alpha 通道渲染较小的图像 - 即它冲出背景图像。

当我在设计时加载两个图像时,不会发生这种情况。它们在表单上都显示为部分透明,并在我运行程序时正确显示。

真正的困境是,为尝试演示问题而编写的最小测试程序不会显示问题,但应用程序中的相同代码本身却没有表现。

潜在的主要形式有什么可能影响行为的吗?

4

1 回答 1

1

我不知道这对于 TJvImage 是否相同,但是当您将 TImage 的透明属性设置为 True 时,它​​会导致 TImage 跳过使用透明颜色渲染任何像素。如果没有设置透明色,则使用左下像素的颜色。在这种模式下,TImage 不会进入 alpha 通道。Infact Transparency 仅在您将 TBitmap 类型的图像加载到 TImage 时才有效。

我猜 TJvImage 可能以类似的方式工作。因此,为了正确显示您的图像,您应该将透明属性设置为 False。这可能会允许 TJvImage 使用编码到图片本身的 Alpha 透明度来渲染您的图片。

于 2014-05-22T11:45:36.177 回答