me gustaría escalar una BitmapData para diferentes tamaños, tales como 200, 400, 600 y 800.AS3 - Escala BitmapData
¿Qué es una buena manera de hacer eso?
me gustaría escalar una BitmapData para diferentes tamaños, tales como 200, 400, 600 y 800.AS3 - Escala BitmapData
¿Qué es una buena manera de hacer eso?
No se puede escalar directamente un BitmapData
pero se puede hacer un clon a escala de la misma. Aquí hay un ejemplo rápido para escalar un BitmapData
:
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Matrix;
import mx.core.BitmapAsset;
public class Test extends Sprite {
[Embed(source="test.jpg")]
private var Image:Class;
public function Test() {
var originalBitmapData:BitmapData = BitmapAsset(new Image()).bitmapData;
function scaleBitmapData(bitmapData:BitmapData, scale:Number):BitmapData {
scale = Math.abs(scale);
var width:int = (bitmapData.width * scale) || 1;
var height:int = (bitmapData.height * scale) || 1;
var transparent:Boolean = bitmapData.transparent;
var result:BitmapData = new BitmapData(width, height, transparent);
var matrix:Matrix = new Matrix();
matrix.scale(scale, scale);
result.draw(bitmapData, matrix);
return result;
}
var bitmapA:Bitmap = new Bitmap(originalBitmapData);
addChild(bitmapA);
var bitmapB:Bitmap = new Bitmap(scaleBitmapData(originalBitmapData, 0.5));
addChild(bitmapB);
}
}
}
Establecer el ancho y alto de un objeto de mapa de bits escala esa imagen, así que cree un mapa de bits con su bitmapData y luego calcúlelo utilizando ancho/alto, o use scaleX/Y si desea usar valores de escala.
var bmp:Bitmap = new Bitmap(bmpData);
bmp.width = 400; // or 600,800 etc.
bmp.height = 400;
Si no desea utilizar un objeto de mapa de bits y la escala o directamente la BitmapData ver este What is the best way to resize a BitmapData object?