2011-09-08 52 views
1

我想用e自己的图像替换标准的柔性条形图表栏。这工作通过嵌入图像和设置为位图填充。但是,即使我在嵌入时应用9切片缩放,这些图像也不会很好地缩放。9切片缩放不适用于图表填充

[Embed source="bar.png", scaleGridRight="721", scaleGridLeft="15", scaleGridTop="1", scaleGridBottom="90")]

[Bindable]

public var bar:Class;

和施加时

var x:BitmapFill = new BitmapFill();

x.source = bar;

series1.setStyle("fill", x);

9切片缩放选项被忽略。我不知道如何解决这个问题。

将相同的嵌入式图像应用于标准图像容器时需要注意的一点是,它尊重缩放选项。

回答

2

scale9GridGraphics.beginBitmapFill()方法中使用位图时不起作用。

其中一个解决方案是创建一个BitmapFill子类,它可以使用它。 Here is the FXP with solution这里是它如何工作的:

<s:Application ...> 

    <fx:Script> 
    <![CDATA[ 

     [Bindable] 
     [Embed(source="sample.png", scaleGridTop="30", scaleGridLeft="7", 
      scaleGridRight="384", scaleGridBottom="206")] 
     private var sample:Class; 

    ]]> 
    </fx:Script> 

    <s:Group left="0" right="0" top="0" bottom="0"> 
     <s:Rect left="0" right="0" top="0" bottom="0"> 
      <s:fill> 
       <local:BitmapFillScale9Grid source="{sample}"/> 
      </s:fill> 
     </s:Rect> 
    </s:Group> 

</s:Application> 

解决方案基于bent.googlecode.com

+0

哇!这很好用!非常感谢Maxim! –

+0

我注意到的一个小问题是,它不支持透明图像。为了解决这个问题,你可以修改line ** 51 **看起来像这样 'bitmapData = new BitmapData(displayObject.width,displayObject.height,true,0x00CCCCCC);' –

+0

当然,这是一个调试错字。 –