Объект изображения, показывающий белый фон - PullRequest
0 голосов
/ 03 августа 2011

У меня есть объект 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>

[EDIT] На снимке экрана видны 2 объекта, сделанные изкод я выложил выше.Как вы можете видеть, есть белая граница.enter image description here

и вот один из PNGЭтот PNG имеет прозрачную 1-дюймовую границу при 350 @ PPI, это 72 PPI, так что чуть меньшеВы не можете видеть границу здесь, очевидно, но если вы перетащите ее на рабочий стол и откроете в фотошопе, вы увидите ееenter image description here

[ПРАВИТЬ]Как предложил SuperSaiyen, я добавил backgroundColor = "# 000000" на панель и получил этот результат.Как вы можете видеть, у меня теперь черная граница.enter image description here

Поэтому я пошел дальше и добавил backgroundAlpha = "0" вместе с backgroundColor = "# 000000" на панель и получил это.enter image description hereТак что теперь у меня почти есть это, но все еще есть тот синеватый цвет вокруг этого.Это еще не совсем прозрачно на 100%.Я действительно понятия не имею, почему фон панели изменит тег изображения.Я предполагаю, что происходит какое-то наследство от родителей.Еще нужно избавиться от синевы.

1 Ответ

1 голос
/ 12 августа 2011

Вместо установки масштаба попробуйте следующее:

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

Я попытался воссоздать вашу проблему, и даже со шкалой я не видел белых границ.enter image description here

У меня есть черная рамка, потому что это фон панели ...

<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 prop на панели).То, что вы хотите, это установить фон панели таким же цветом, что и границы панели.Является ли панель правильным контейнером для использования?Как насчет 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>

enter image description here

...