Полученное изображение должно быть прямоугольником, но вы можете замаскировать его прозрачностью, используя BitmapData.draw
и BlendMode
:
var originalImage:BitmapData; // defined
var maskPath:GraphicsPath; // defined
var maskShape:Shape = new Shape();
maskShape.graphics.beginFill(0, 0); // fill region with transparent
maskShape.graphics.drawRect(0, 0, originalImage.width, originalImage.height);
maskShape.graphics.endFill();
maskShape.graphics.beginFill(0xFF0000);
maskShape.graphics.drawPath(maskPath.commands, maskPath.data, maskPath.winding);
maskShape.graphics.endFill();
var resultImage:BitmapData = originalImage.clone();
resultImage.draw(maskShape, null, null, BlendMode.ALPHA);
Для обрезки вы, вероятно, могли бы сделать что-то более причудливое в последних нескольких строках - скопировать область вместо клонирования всего originalImage
и / или применить преобразование при применении maskShape
.
(Я полагаю, что для использования BlendMode
s необходимо использовать DisplayObject
, но это не ясно в документации.)