Ответ 1
Если я правильно понял вашу проблему.
Вы можете использовать встроенную функцию Flex/as3, чтобы сделать снимок экрана всего приложения или конкретного компонента, а затем преобразовать в bytearray и PngEncoder (или JPGEncoder, если хотите), чем сохранить его...
Вот пример:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.graphics.codec.PNGEncoder;
private function takeSnapshot(comp:DisplayObject):void {
var bitmapData:BitmapData = new BitmapData(comp.width,comp.height,false,0x00000000);
bitmapData.draw(comp, new Matrix());
var fileStream:FileStream = new FileStream();
fileStream.open(File.desktopDirectory.resolvePath("screenshot.png"), FileMode.UPDATE);
fileStream.writeBytes(new PNGEncoder().encode(bitmapData));
}
]]>
</fx:Script>
<s:BorderContainer width="100%" height="100%" backgroundColor="#ff00ff">
<s:Label text="this text and box should be saved"/>
<s:BorderContainer width="25%" height="25%" backgroundColor="#ffff00" horizontalCenter="0"
id="extended"
verticalCenter="0">
<s:Label text="this text and box should be saved" width="100%" maxDisplayedLines="5"/>
</s:BorderContainer>
</s:BorderContainer>
<s:Button bottom="0" left="0" label="screen" click="takeSnapshot(extended)"/>
</s:WindowedApplication>
EDIT:
Как я думал, я неправильно понял просьбу.
Единственный способ, о котором я могу думать, это:
- Сведите к минимуму приложение (
this.minimize();
) или установите альфа в 0 (this.alpha=0
). - Сделайте снимок экрана
- Разверните приложение (
this.maximize();
) или установите альфа в 1 (this.alpha=0
).