Recipe 8.9. Copying Channels


Problem

You want to copy the red, green, blue, or alpha from one BitmapData to another.

Solution

Use the copyChannel( ) method of the BitmapData class.

Discussion

The copyChannel( ) method is yet another method that draws information from one bitmap to another. Actually, the first three arguments are the same as the copyPixels( ) method. In addition, it has source channel and destination channel parameters:

bitmap.copyPixels(sourceBmp, srcRect, destPoint,                srcChannel, destChannel);

The two channel parameters can be one of the integers 1, 2, 4, or 8, which represent the red, green, blue, and alpha channels, respectively. Rather than risking a typographical error, you should use the static properties of the BitmapDataChannel class: RED, GREEN, BLUE, and ALPHA.

You simply tell the method which channel you want to take from the original image and which channel you want to copy it into in the destination image. The following code copies the red, green, and blue channels of a loaded image to a new bitmap, slightly offset from one another:

var loaderBmp:Bitmap = Bitmap(loader.content); bitmap.copyChannel(loaderBmp.bitmapData,                 loaderBmp.bitmapData.rect,                 new Point(  ),                 BitmapDataChannel.RED,                 BitmapDataChannel.RED); bitmap.copyChannel(loaderBmp.bitmapData,                 loaderBmp.bitmapData.rect,                 new Point(5, 5),                 BitmapDataChannel.GREEN,                 BitmapDataChannel.GREEN); bitmap.copyChannel(loaderBmp.bitmapData,                 loaderBmp.bitmapData.rect,                 new Point(10, 10),                 BitmapDataChannel.BLUE,                 BitmapDataChannel.BLUE);

See Also

Recipes 8.5, 8.6, 8.7, 8.8, 8.10, and 8.11 for other ways to add graphical content to a bitmap.




ActionScript 3. 0 Cookbook
ActionScript 3.0 Cookbook: Solutions for Flash Platform and Flex Application Developers
ISBN: 0596526954
EAN: 2147483647
Year: 2007
Pages: 351

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net