【发布时间】:2014-05-22 03:29:10
【问题描述】:
我的主窗体上有几个 TJvImage 组件。一个是在设计时从部分透明的 PNG 文件加载的。另一个比第一个小,在它前面。它在运行时与另一个部分透明的 PNG 文件一起加载。
JvImage1.Picture.LoadFromFile ('Logo.png') ;
JvImage1.Transparent 设置为 TRUE。问题很简单:忽略 alpha 通道渲染较小的图像 - 即,它冲出背景图像。
当我在设计时加载两个图像时,不会发生这种情况。它们在表单上都显示为部分透明,并在我运行程序时正确显示。
真正的困境是,为尝试演示问题而编写的最小测试程序确实没有显示问题,但应用程序中的相同代码本身却没有运行。
底层的主要形式有什么会影响行为的吗?
【问题讨论】:
-
我建议您隔离问题。删除失败的代码,直到它工作。查看 dfm 文件。为什么将透明设置为真?您的图像具有 Alpha 通道。
-
我从未想过您需要将
Transparent设置为 FALSE 才能使透明度发挥作用。现在我知道了! (帮助声明:“将透明设置为 true 以允许 TImage 对象后面的对象通过图像的背景显示。将透明设置为 false 以使图像的背景不透明”)。不幸的是,将透明设置为 false 并不能解决问题。我尝试创建一个项目并将违规表单的全部内容粘贴到其中,并且图像显示正常。我还有一些工作要做。
标签: delphi png delphi-2007 alpha-transparency jvcl