使用非矩形形状在 flex 中裁剪图像
Posted
技术标签:
【中文标题】使用非矩形形状在 flex 中裁剪图像【英文标题】:Crop image in flex using a non-rectangular shape 【发布时间】:2009-10-30 10:26:30 【问题描述】:我一直在按照本教程在 flex 中裁剪图像:http://code.mediablur.com/ImageCropper/ImageCropperDemo.html。
其裁剪的核心是使用一种称为“copyPixels”的方法。但是,此方法将其裁剪区域的矩形形状作为其参数之一。我可以使用其他策略来裁剪它而不使用矩形。
我要让用户指定应该使用一系列点裁剪的区域。
【问题讨论】:
【参考方案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
才能使用BlendMode
s,但这在文档中并不清楚。)
【讨论】:
以上是关于使用非矩形形状在 flex 中裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章