2011-10-18 1 views

Répondre

6

Comme il se trouve, j'ai une classe qui fait exactement cela:

package 
{ 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.BitmapDataChannel; 
    import flash.geom.Point; 
    import flash.geom.Rectangle; 

    public class BitmapAlphaMerge 
    { 
     public static function merge (imgBitmap:Bitmap, maskBitmap:Bitmap) : Bitmap 
     { 
      var img:BitmapData = imgBitmap.bitmapData; 
      var mask:BitmapData = maskBitmap.bitmapData; 
      var mergeBmp:BitmapData = new BitmapData(img.width, img.height, true, 0); 
      var rect:Rectangle = new Rectangle(0, 0, img.width, img.height); 
      mergeBmp.copyPixels(img, rect, new Point()); 
      mergeBmp.copyChannel(mask, new Rectangle(0, 0, img.width, img.height), new Point(), BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); 
      return new Bitmap(mergeBmp); 
     } 
    } 
} 

Le premier paramètre est imgBitmap l'image que vous voulez ajouter le canal alpha. maskBitmap est le Bitmap dont vous copiez le canal. Vous pouvez modifier cela pour utiliser des objets BitmapData purs assez facilement.

+0

merci, devrait être pratique –

+0

eco_bach puis accepter la réponse –

Questions connexes