参考:
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者有不同之处
第一种方法,对于滚动条内的内容,即使你滚动到可见区域,也没有被截取保存,第二种方法完成截取当前可见部分.