у меня следующая ситуация:
один слой для рисования (графический объект с lineTo и т. Д.)
один PNG с альфа-каналом (должен служить только в качестве маски)
теперь я хочу иметь возможность рисовать линии только в пределах области, ограниченной маской png.
Я пытаюсь так:
var bitmapData:BitmapData = new BitmapData( 320, 320 );
bitmapData.draw( drawingLayer );
bitmapData.copyChannel( maskBitmapData, new Rectangle( 0, 0, 320, 320 ), new Point( 0, 0 ), BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA );
теперь границы хорошо обрезаются, но я получаю черный фон, поскольку слой рисования имеет альфа между нарисованными линиями (и он должен оставаться таким), а растровое изображение маски имеет альфа вне фигуры. поэтому, естественно, альфа маски заменяет слой рисования.
Я попробовал это с merge, copyPixels, а также просто установив свойство mask на слой рисования (я установил все в cacheAsBitmap), но безрезультатно.
Может ли кто-нибудь помочь мне здесь?
Сложение:
при попытке использовать маску я попробовал ее с
<s:BitmapImage id="mask" source="@Embed(source='...')" cacheAsBitmap="true" />
а также
[Embed("...")]
private const BodyMask:Class;
var maskBitmap:Bitmap = new BodyMask();
и присваивает их свойству mask элемента s: Group (cacheAsBitmap = true), где происходили операции с графическим объектом. Я также пытался переназначить маску после каждой операции рисования.
может быть что-то не так с этим?