我想使用带有HDividedBox元素的ColorMatrixFilter,以便左右框使图表变为黑色&白色,但中间部分保持颜色。
似乎过滤器必须在AreaChart而不是HDividedBox上,但我想知道是否有办法设置画布来掩盖它们背后的内容。
我目前的代码如下;灰色滤镜无效。
<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);
答案 0 :(得分:1)
过滤器仅应用于应用它们的对象的内容。
所以,如果你在rightBox
画布中有东西,那么应该在应用过滤器的情况下看到它。但是,如果对象不是此画布的子对象,则不会应用过滤器。
您可以尝试使用BitmapData
对象及其draw
方法捕获画布下方的图像,并将滤镜应用于生成的位图。