天天看点

flash加载外部图片等比缩放类(as3)

package com.sunxinzhe.display

{

import flash.display.Bitmap;

import flash.display.BitmapData;

import flash.display.DisplayObject;

import flash.display.IBitmapDrawable;

import flash.geom.Matrix;

import flash.geom.Rectangle;

/**

* ...图像数据处理工具

*/

public class BitmapUtil

{

/**

* 获取按指定尺寸等比例缩放+居中的截图

* @param target 目标对象

* @param tarW 目标尺寸(宽)

* @param tarH 目标尺寸(高)

* @param full 是否显示图片全貌

* @return

*/

public static function getZoomDraw(target:DisplayObject, tarW:int, tarH:int,full:Boolean=true):BitmapData {

//获取显示对象矩形范围

var rect:Rectangle = target.getBounds(target);

//计算出应当缩放的比例

var perw = tarW / rect.width;

var perh = tarH / rect.height;

var scale = full?((perw <= perh)?perw:perh):((perw <= perh)?perh:perw);

//计算缩放后与规定尺寸之间的偏移量

var offerW = (tarW - rect.width * scale) / 2;

var offerH = (tarH - rect.height * scale) / 2;

//开始绘制快照(这里透明参数是false,是方便观察效果,实际应用可改为true)

var bmd:BitmapData = new BitmapData(tarW, tarH, false, 0);

var matrix:Matrix = new Matrix();

matrix.scale(scale, scale);

matrix.translate( offerW, offerH);

bmd.draw(target, matrix);

//如果是bitmap对象,释放位图资源

if (target is Bitmap) (target as Bitmap).bitmapData.dispose();

//返回截图数据

return bmd;

}

}

继续阅读