代码之家  ›  专栏  ›  技术社区  ›  stevedbrown

在Flex中使用带有HDividedBox的ColorMatrixFilter

  •  0
  • stevedbrown  · 技术社区  · 16 年前

    我当前的代码如下:;灰色滤镜没有效果。

    <mx:HDividedBox id="dividedBox" horizontalScrollPolicy="off"
            width="100%" height="100%" 
            liveDragging="true" >
        <mx:Canvas id="leftBox" backgroundColor="#FFFFFF" 
                backgroundAlpha="0.5" width="50%" 
                height="100%" />
        <mx:Canvas backgroundColor="#FFFFFF" backgroundAlpha="0" 
                width="50%" height="100%" buttonMode="true"   
                mouseDown="setMouseDown(rangeChart);" 
                minWidth="{rangeDataRatio * 4}"
        mouseUp="showAnnotations = true; refreshAnnotations()"/>
    <mx:Canvas id="rightBox" backgroundColor="#FFFFFF" 
        backgroundAlpha="0.5" width="0%" height="100%"
        filters="{[greyFilter]}" />
    </mx:HDividedBox>
    

    过滤代码如下:

    var greyMatrix:Array = [ 
        1,1,1,0,0,
        1,1,1,0,0,
        1,1,1,0,0,
        0,0,0,1,0 ];
    
    var greyFilter:ColorMatrixFilter = 
        new ColorMatrixFilter(greyMatrix);
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Hrundik    16 年前

    过滤器仅应用于它们所应用的对象的内容。 所以,如果你里面有什么东西 rightBox 画布,那么在应用过滤器后应该可以看到它。但是,如果对象不是此画布的子对象,则不会应用过滤器。

    您可以尝试使用 BitmapData 对象及其 draw 方法捕获画布下方的图像,并将过滤器应用于生成的位图。