【问题标题】:Crop image in flex using a non-rectangular shape使用非矩形形状在 flex 中裁剪图像
【发布时间】:2009-10-30 10:26:30
【问题描述】:
【问题讨论】:
标签:
apache-flex
image
crop
【解决方案1】:
当然,生成的图像必须是一个矩形,但您可以使用 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 时应用转换。
(我认为必须使用DisplayObject 才能使用BlendModes,但这在文档中并不清楚。)