关于flex截图

参考:

http://xltank.iteye.com/blog/599533

 

flex截图有两种方式:

1)直接使用 ImageSnapshot.captureBitmapData(.....)API,然后通过mx.graphics.codec.JPEGEncoder或者PNGEncoder生成JPEG或者PNG图片

 

2)使用BitmapData对象的draw方法,然后仍然通过mx.graphics.codec.JPEGEncoder或者PNGEncoder生成JPEG或者PNG图片

 

第一种方法非常简单,代码如下:

new JPEGEncoder(80).encode(ImageSnapshot.captureBitmapData(source))即可返回图片的字节数据

 

第二种方法稍微有一点复杂,代码如下:

var bitmapData:BitmapData = new BitmapData(cvs.width, cvs.height, true, 0);

var rectangle:Rectangle = new Rectangle(0,0,cvs.width,cvs.height*1);

bitmapData.draw(cvs, null, null, null, rectangle, true);

new JPEGEncoder(80).encode(bitmapData)即可返回图片的字节数组,如果直接显示图片在flex容器中,可以通Bitmap类来完成,代码如下:

 

image.addChild(new Bitmap(bitmapData));即可

 

注:

但2者有不同之处

第一种方法,对于滚动条内的内容,即使你滚动到可见区域,也没有被截取保存,第二种方法完成截取当前可见部分.

你可能感兴趣的:(Flex,Blog,cvs)