我发现在BitmapData上有合并,绘制和复制像素的方法,但无论我尝试什么,它似乎都不会改变位图实例的大小。
这是我到目前为止所做的:
var initialWidth:int = 100;
var initialHeight:int = 100;
bitmapData = new BitmapData(initialWidth,initialHeight,true,0xFFFFFFFF);
rectangle = new Rectangle(0, 0, newBitmapData.width, newBitmapData.height);
bitmapData.merge(newBitmapData, rectangle, new Point(), 0, 0, 0, 0);
bitmapData.drawWithQuality(newBitmapData, null, null, null, null, false, quality);
bitmapData.drawWithQuality(LoaderInfo(event.currentTarget).loader, null, null, null, null, false, quality);
bitmapData.copyPixels(newBitmapData, newBitmapData.rect, new Point());
bitmapData.merge(newBitmapData, null, new Point(), 0, 0, 0, 0);
或者可以将尺寸缩小吗?
答案 0 :(得分:1)
简短的回答是否定的,你不能。
为了完整起见,Roger Braunstein引用ActionScript 3.0 Bible:
位图的大小在构造时固定。你必须在一开始就选择它,以后你就不能改变它的大小。
如果您希望避免复制位图数据,建议使用显示对象蒙版剪切可见区域。
答案 1 :(得分:0)
几乎是,但实际上不是! 可以重新创建位图数据,其宽度和高度是静态的 但如果您只想剪裁它或在较小的区域中调整它的大小,则可以将未使用的像素透明化。
var bmd:BitmapData = new BitmapData(100, 100, true, 0x0);
bmd.draw(s_omethin_g);
bmd = clipDown(bmd, new Point(50,50));
function clipDown(_bmd:BitmapData, _size:Point):BitmapData {
var defaultBmdbound:bitmapData = new BitmapData(_bmd.width, _bmd.height, true, 0x0);
var smatrix:Matrix = new Matrix();
smatrix.scale(_size.x/_bmd.width, _size.y/_bmd.height);
var resizedBmd:BitmapData = new BitmapData(_size.x, _size.y);
resizedBmd.draw(_bmd, smatrix);
var rect:Rectangle = new Rectangle(0,0,resizedBmd.width,resizedBmd.height);
defaultBmdbound.copyPixels(resizedBmd, rect, new Point());
return defaultBmdbound;
}