Использование ColorMatrixFilter с HDividedBox во Flex - PullRequest
0 голосов
/ 08 июня 2009

Я хочу использовать ColorMatrixFilter с элементом HDividedBox, чтобы левые и правые поля делали диаграмму черно-белой, но оставляли центральную часть цветной.

Кажется, что фильтр должен быть на 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);

1 Ответ

1 голос
/ 08 июня 2009

Фильтры применяются только к содержимому объекта, к которому они применяются. Итак, если у вас есть что-то внутри rightBox canvas, то это должно быть видно с применением фильтра. Но если объект не является потомком этого холста, фильтр не будет применен.

Вы можете попробовать использовать объект BitmapData и метод draw, чтобы захватить изображение под холстом и применить фильтр к полученному растровому изображению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...