使用非矩形形状在flex中裁剪图像

时间:2009-10-30 10:26:30

标签: flex image crop

我一直在按照本教程在flex中裁剪图像:http://code.mediablur.com/ImageCropper/ImageCropperDemo.html

裁剪的核心是使用一种名为“copyPixels”的方法。但是,此方法的作用之一是其作物区域的矩形形状。我是否可以使用其他策略来裁剪它而不使用矩形。

我要让用户指定应使用一系列点进行裁剪的区域。

1 个答案:

答案 0 :(得分:0)

当然,生成的图像必须是矩形,但您可以使用BitmapData.drawBlendMode屏蔽透明度:

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来使用BlendMode,但这在文档中并不清楚。)