【问题标题】:Image object white background showing图像对象白色背景显示
【发布时间】: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


【解决方案1】:

不要设置比例,试试这个:

<mx:Image id="img" height="{this.height-38}" maintainAspectRatio="true" />

我试图重现您的问题,即使使用比例尺,我也没有看到白色边框。

我有一个黑色边框,因为那是面板的背景...

<mx:Panel id="thePanel" headerHeight="20"
              horizontalAlign="center" verticalAlign="middle"
              height="200" width="150"
              backgroundColor="#000000">

        <!-- how do I make this image object have a transparent background -->
        <mx:Image id="img" height="{thePanel.height-38}" maintainAspectRatio="true" />

    </mx:Panel>

编辑: 因此,您看到的背景是面板后面的框的背景,而不是图像(请参阅面板上的 opaqueBackground 道具)。然后,您需要将面板的背景设置为与面板边框相同的颜色。面板是正确的容器吗?带圆角的 HBox 怎么样?

<mx:VBox id="thePanel" cornerRadius="4" backgroundColor="0xd1dbe9"
             horizontalAlign="center" verticalAlign="middle"
             height="200" width="150"
             paddingBottom="5" paddingLeft="5" paddingTop="5">
        <mx:Label text="Bind to title String" />
        <mx:Image id="img" width="100%" height="100%"/>
    </mx:VBox>

【讨论】:

  • ...是的,您没有白色边框。你有一个黑色的边框。 /facepalm。
  • 我正在查看的背景颜色在图像标签上而不是面板上
  • SuperSaiyen 我编辑了我的问题,向您展示您所说的结果,并在其中添加了 alpha 0。它已经很接近了,但还没有完全实现。
  • 我认为您看到的颜色是在图像标签上,这就是为什么我在面板上设置背景,以确认图像是透明的。奇怪的是它像那样级联。你有没有可能有一些面板 CSS 设置面板边框宽,而你看到的背景是面板的背景?
  • 目前还没有使用 CSS。在我看来,蓝色调是面板容器“它是一个 HBox”的背景颜色。面板都被添加到 Hbox 中,所以我尝试更改其背景颜色只是为了进行实验,果然红色级联下来,一切都变成了红色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多