actionscript3.0 图片裁剪





主要用到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, nullnullnull, 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(
30xFF00000.5true, 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(); 
        }

    }
 
}

 
 
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值