在我的主表单上有一对TJvImage组件。其中一个是在设计时从部分透明的PNG文件加载的。另一个比第一个小,在它前面。它在运行时与另一个部分透明的PNG文件一起加载。
JvImage1.Picture.LoadFromFile ('Logo.png') ;
JvImage1。透明设置为TRUE。问题很简单:较小的图像被渲染时忽略了alpha通道——也就是说,它把背景图像打掉了。
当我在设计时加载两个图像时不会发生这种情况。它们都在表单上显示为部分透明,并且在运行程序时正确显示。
真正的困境是,为了演示问题而编写的最小测试程序没有显示问题,但应用程序中的相同代码却没有表现出来。潜在的主要形式是否会影响行为?
我不知道这是否与TJvImage相同,但是当你将TImage的Transparent属性设置为True时,它会导致TImage跳过渲染任何像素的TransparentColor。如果没有设置透明颜色,则使用左下像素的颜色。在这种模式下,TImage不考虑alpha通道。事实上,只有当你将TBitmap类型的图像加载到TImage中时,透明度才有效。
我猜想TJvImage可能以类似的方式工作。为了正确显示你的图像你应该设置Transparent属性为False。这可能会允许TJvImage通过使用编码到图片本身的Alpha透明度来渲染图片。