我目前正在尝试在 Flex 中使用 imageSnapshot 函数。我一直在努力寻找,但似乎找不到解决我的问题的方法。我希望截取我的一个组件的屏幕截图,以捕获程序的最终输出,因为普通的“打印屏幕”会由于滚动而切断一些输出。我当前的代码看起来像 -
<mx:ApplicationControlBar dock="true">
<mx:Button label="Take snapshot of Profile"
click="takeSnapshot();" />
</mx:ApplicationControlBar>
调用时会执行 -
private function takeSnapshot(even:Event=null):void {
var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(viewstack1);
现在我认为这是拍摄我想要的 View 堆栈的图像......但我很难从这里做什么!现在是否无法将图像复制到剪贴板,或者在浏览器中生成一个包含整个图像的新窗口?如果有人有任何其他方法可以做到这一点,建议会很棒。
感谢您的宝贵时间。
最佳答案
您可以将 View 堆栈绘制到 BitmapData 对象中,并使用 as3corelib 将其编码为 png 。像这样的东西:
var screenshotData : BitmapData = new BitmapData(viewstack1.width, viewstack1.height, true, 0x00000000);
screenshotData.draw(viewstack1);
var outputData:ByteArray = PNGEncoder.encode(screenshotData);
// Save outputData as a file to disk, send to webserver etc..
编辑:呃,这可能会让你更加困惑。对于那个很抱歉。 ImageSnapshot 有一个名为 data 的属性,我猜它给你的结果与此几乎相同。您可以使用 flash.net.FileReference 将其作为文件保存到磁盘上
关于apache-flex - Flex 3 - 保存组件的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534358/