解决方案:使用内置的一个叫做ImageSnapShot的类可以截图指定数据源的图。 下面代码为示例源码: <?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" minWidth="955" minHeight="600" xmlns:carousel="com.kingdee.carousel.*" creationComplete="application1_creationCompleteHandler(event)"> <fx:Script> <!--[CDATA[ import mx.collections.ArrayCollection; import mx.events.FlexEvent; import mx.graphics.ImageSnapshot; import mx.managers.PopUpManager; import spark.components.TitleWindow; protected function snapShotBtn_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub snap(panel); } protected function snap(source:IBitmapDrawable):void { var snapShot:ImageSnapshot=ImageSnapshot.captureImage(source); var imagebyteArr:ByteArray=snapShot.data; swfLoader.load(imagebyteArr); } protected function application1_creationCompleteHandler(event:FlexEvent):void { // TODO Auto-generated method stub PopUpManager.createPopUp(panel, TitleWindow); } protected function enterFramehandler(event:Event):void { snap(panel); } ]]--> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <mx:SWFLoader id="swfLoader" x="562" y="68"/> <s:Panel x="118" y="190" width="613" height="356" id="panel"> <mx:DataGrid x="56" y="66" id="dg"> <mx:columns> <mx:DataGridColumn headerText="列 1" dataField="col1"/> <mx:DataGridColumn headerText="列 2" dataField="col2"/> <mx:DataGridColumn headerText="列 3" dataField="col3"/> </mx:columns> </mx:DataGrid> <s:Button id="snapShotBtn" x="426" y="135" label="截图" click="snapShotBtn_clickHandler(event)"/> </s:Panel> </s:Application>