主要用到BitmapData.draw()方法,其中参数clipRect ,要注意,我研究了半天才才知道。仔细查看代码。 package ...{ import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.* ; import flash.display.*; import flash.geom.* ; public class Main extends Sprite ...{ private var _picx:int = 0 ; private var _picy:int = 120 ; private var _picwidth = 0 ; private var _picheight = 0 ; private var _bitmapdata:BitmapData ;//原始图像数据 private var _rect:Sprite ;//裁剪区域 public function Main():void...{ this.loaderPic("F:/a.jpg"); cut_btn.addEventListener(MouseEvent.MOUSE_DOWN, drawPic); save_btn.addEventListener(MouseEvent.MOUSE_DOWN, savePic) ; } /** *//** * 保存裁剪图片 * @param e */ private function savePic(e:MouseEvent)...{ //组装裁剪区域,把sprite 转换为Rectangle . var cutpic:Rectangle = new Rectangle(_rect.x,_rect.y,_rect.width,_rect.height); //存储新图片信息的数组,参数和原图数组要一致。因为没裁剪区域也占用存储单元 var cutbitmapdata:BitmapData = new BitmapData(_bitmapdata.width, _bitmapdata.height) ; //裁剪图片 cutbitmapdata.draw(_bitmapdata, null, null, null, cutpic); var bitmap:Bitmap = new Bitmap(cutbitmapdata) ; //只显示裁剪区域图片,去除其他空位置 bitmap.scrollRect = cutpic ; bitmap.x = 100; bitmap.y = 0 ; this.addChild(bitmap) ; } /** *//**** * 装载图片 * @param picurl */ public function loaderPic(picurl:String):void...{ if (picurl == null || picurl == "") ...{ return ; } var request:URLRequest = new URLRequest(picurl); var loader:Loader = new Loader() ; loader.load(request); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHander); } /** *//**** * 装载图片完成之后处理 * @param e */ private function completeHander(e:Event):void ...{ var loader:Loader = e.target.loader as Loader; this._picwidth = _loader.width ; this._picheight = _loader.height ; _bitmapdata= new BitmapData(loader.width, loader.height); _bitmapdata.draw(_loader); var _bitmap:Bitmap = new Bitmap(_bitmapdata); _bitmap.x = this._picx; _bitmap.y = this._picy ; this.addChild(_bitmap); } /** *//**** * 裁剪区域 * @param e */ public function drawPic(e:MouseEvent):void ...{ trace(this._picwidth); _rect= new Sprite () ; /** *//***设置裁剪区域边框样式*/ _rect.graphics.lineStyle(3, 0xFF0000, 0.5, true, LineScaleMode.NONE, CapsStyle.ROUND); _rect.graphics.beginFill(0xCCFF00,0); _rect.graphics.drawRect(this._picx, this._picy, this._picwidth/4,this._picheight/4); _rect.graphics.endFill(); _rect.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler) ; _rect.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandle) ; this.addChild(_rect) ; } private function mouseDownHandler(e:MouseEvent):void ...{ var _rectangle:Rectangle = new Rectangle(); _rectangle.width = _picwidth-_rect.width ; _rectangle.height = _picheight-_rect.height ; //trace(_rectangle.x, _rectangle.y); _rect.startDrag(false,_rectangle); } private function mouseUpHandle(e:MouseEvent):void ...{ _rect.stopDrag(); } } }