shafi,From adobe reference: ...Validate and update the properties and layout of this object and redraw it, if necessary...
Sample here:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:ags="http://www.esri.com/2008/ags">
<s:layout>
<s:VerticalLayout gap="20"
paddingBottom="20"
paddingLeft="20"
paddingRight="20"
paddingTop="20" />
</s:layout>
<fx:Script>
<![CDATA[
import mx.core.UIComponent;
import mx.graphics.codec.PNGEncoder;
private const FILE_NAME:String = "screen.png";
private var bitmapData:BitmapData;
private var logoBitmapData:BitmapData;
/**
* Listen print button click
*/
protected function onPrintClick(event:MouseEvent):void
{
exportPngImage();
}
/**
* Export png
*/
private function exportPngImage():void
{
if (map)
{
var fileReference:FileReference = new FileReference();
hideComponents();
// add listeners to show zoom slider after execution
fileReference.addEventListener(Event.COMPLETE, fileSaveComplete);
fileReference.addEventListener(Event.CANCEL, fileSaveCancel);
try
{
var mapComponent:UIComponent = map as UIComponent;
var exportData:BitmapData = getBitmapData(mapComponent);
if (exportData)
{
// encode to PNG format
var pngEncoder:PNGEncoder = new PNGEncoder();
var byteArray:ByteArray = pngEncoder.encode(exportData);
// open dialog box
fileReference.save(byteArray, FILE_NAME);
exportData = null;
bitmapData = null;
logoBitmapData = null;
}
}
catch (ioError:IllegalOperationError)
{ // handle error
}
catch (error:Error)
{ // handle error
}
}
}
/**
* file upload/download canceled by user
*/
protected function fileSaveCancel(event:Event):void
{
showComponents();
}
/**
* file upload/download completed
*/
protected function fileSaveComplete(event:Event):void
{
showComponents();
}
private function hideComponents():void
{
if (!chboxCrosshair.selected)
map.crosshairVisible = false;
if (!chboxLogo.selected)
map.logoVisible = false;
if (!chboxScale.selected)
map.scaleBarVisible = false;
if (!chboxSlider.selected)
map.zoomSliderVisible = false;
// force UIComponent update/redraw
map.validateNow();
}
private function showComponents():void
{
map.crosshairVisible = true;
map.logoVisible = true;
map.scaleBarVisible = true;
map.zoomSliderVisible = true;
}
/**
* get bitmap data from IBitmapDrawable component
*/
private function getBitmapData(uiComponent:UIComponent):BitmapData
{
if (uiComponent)
{
try
{
// map image size
var mapWidth:Number = uiComponent.width;
var mapHeigth:Number = uiComponent.height;
// get flash map bitmap data
bitmapData = new BitmapData(mapWidth, mapHeigth);
var matrix:Matrix = new Matrix();
bitmapData.draw(uiComponent, matrix);
if (chboxCR.selected)
{
// logo image size
var logoWidth:Number = logo.width;
var logoHeigth:Number = logo.height;
// get logo bitmap data
logoBitmapData = new BitmapData(logoWidth, logoHeigth);
logoBitmapData.draw(logo, matrix);
// calculate logo left-top position on map
var logoX:Number = mapWidth - logoWidth - 10;
var logoY:Number = 10;
var point:Point = new Point(logoX, logoY);
var mult:uint = 0x100; // 100% (256) RGBA channels multipliers
bitmapData.merge(logoBitmapData, logoBitmapData.rect, point, mult, mult, mult, mult);
}
}
catch (error:Error)
{
// handle error
}
}
return bitmapData;
}
]]>
</fx:Script>
<mx:Image id="logo"
source="http://edn.esri.com/common/style/images/esriLogoSm.gif" />
<ags:Map id="map"
crosshairVisible="true"
logoVisible="true"
scaleBarVisible="true"
zoomSliderVisible="true">
<ags:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
</ags:Map>
<s:HGroup width="100%"
gap="10">
<s:CheckBox id="chboxCrosshair"
selected="true"
label="Print crosshair" />
<s:CheckBox id="chboxLogo"
selected="true"
label="Print logo" />
<s:CheckBox id="chboxScale"
selected="true"
label="Print scale bar" />
<s:CheckBox id="chboxSlider"
selected="true"
label="Print zoom slider" />
<s:CheckBox id="chboxCR"
selected="true"
label="Add Copyright" />
<s:Button label="Print to png"
click="onPrintClick(event)" />
</s:HGroup>
</s:Application>