【发布时间】:2011-08-03 18:59:55
【问题描述】:
我有一个 Image 对象,当图像加载时,该对象的大小会调整为容器大小。
它将加载的图像大小是动态的,因此在调整大小后,我最终会显示图像对象的白色背景。
如何使 Image 对象没有白色背景并且是透明的。
PNG 的某些部分具有透明部分,但由于加载对象的白色背景而显示为白色。
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" headerHeight="20" >
<mx:Script>
<![CDATA[
public function set source( val:String ):void{
this.img.source = val;
}
private function onLoad( e:Event ):void{
// resize image on load to fit
var scale:Number = (this.height - 38) / this.img.contentHeight; // 38 is adjustment for headheight and padding
this.img.scaleX = scale;
this.img.scaleY = scale;
}
]]>
</mx:Script>
<!-- how do I make this image object have a transparent background -->
<mx:Image id="img" complete="onLoad(event)" />
</mx:Panel>
[编辑]
在屏幕截图中可见的是 2 个由我在上面发布的代码制成的对象。
如您所见,有一个白色边框。
这是其中一个PNG
这个 png 在 350@PPI 有一个透明的 1 英寸边框,这是 72 PPI 所以有点小
你在这里显然看不到边框,但是如果你将它拖到桌面并在 Photoshop 中打开你会看到它
[编辑]
正如 SuperSaiyen 建议的那样,我将 backgroundColor="#000000" 添加到面板中,我得到了这个结果。如您所见,我现在有一个黑色边框。
所以我继续在面板中添加了 backgroundAlpha="0" 和 backgroundColor="#000000" 并得到了这个。
所以现在我几乎拥有它,但它周围仍然有蓝色。它还不是 100% 透明。
我真的不知道为什么面板背景会改变图像标签。
我猜想某种来自父母的继承正在发生。
仍然需要摆脱蓝色。
【问题讨论】:
-
呃,不使用面板来包含您的图像吗?如果我没记错的话,Panel 的内容区域有一个白色背景。发布问题的屏幕截图。可能是您的图片没有保存为透明的。
-
@JAX 我验证了图像和标题都是 PNG。所以我编辑了我的问题以向您显示更多信息
-
等等...您是否使用面板作为项目渲染器?!同样,不要使用面板,因为它默认具有白色背景,而且我认为也有一些填充。
-
不,项目渲染器是 Hbox。上面发布的代码是 Hbox 内的一个组件。正如您从上面的屏幕截图中看到的那样,其中显示了 2 个面板,其下方带有滚动条。此外,您可以看到面板默认为灰蓝色背景,图像标签具有白色背景边框,透明度位于图像上。
-
只是要注意这是 flex 3 我不知道 flex 4 或其他库默认是什么。
标签: actionscript-3 apache-flex flex3