2011-06-10 40 views
0

我有一個圖像從URL加載並添加到畫布作爲孩子。然後我拖放另一個圖像,它也使用了雙目變換,因此圖像可以在畫布上轉換。我用這種方式編碼,只有在把它放在畫布上之後,變換手柄才顯示出來。圖像正確顯示。但是我試圖保存結果圖像(即主圖像和放置在其上的圖像),我只能結束之前加載的主圖像。丟棄的圖像不顯示。Flex保存畫布和丟棄的圖像

下面是dragDrop事件觸發的handleDrop()的代碼,並準備最終的圖像。我究竟做錯了什麼?

var dragInitiator:IUIComponent = dragEvent.dragInitiator; 
       var dropTarget:IUIComponent = dragEvent.currentTarget as IUIComponent; 

       var tool:TransformTool = new TransformTool(new ControlSetStandard()); 
       var items:String = dragEvent.dragSource.dataForFormat("items") as String; 

       var img:Image = new Image(); 

       img.x=50; 
       img.y=50; 
       img.width=55; 
       img.height=55; 

       img.source=items.toString(); 
       var bitmap:Bitmap= Bitmap(img.content); 


       var tool:TransformTool = new TransformTool(new ControlSetStandard()); 
       var component:UIComponent = new UIComponent(); 
       tool.target = img; 

       tool.x=myCanvas.x; 
       tool.y=myCanvas.y; 



       addElement(component); 

       myCanvas.addChild(img); 
       img.z=myCanvas.z+1; 
       component.addChild(tool); 
       original=new BitmapData(bmd.width,bmd.height,true,0x000000FF); 
       original.draw(myCanvas); 

回答

1

僅僅因爲您將圖像添加到畫布上並不意味着它已經繪製完成。可以監聽圖像上的updateComplete事件,也可以調用一個函數,然後繪製位圖。

+0

試過了。我使用最後兩行代碼創建了一個新函數,它將畫布繪製到位圖數據,並使用callLater從handleDrop中調用它。但它不起作用。 – redGREENblue 2011-06-10 20:51:33

+0

哦,等一下,你設置的源代碼是一個URL?是的,這需要一幀以上的時間來獲取它,然後繪製它。只需在圖像完成加載和繪製時添加一個「完整的」事件偵聽器。 – 2011-06-10 20:56:43

+0

工作。謝謝。儘管我遇到了一個不同的問題。原始圖像大小大於畫布大小,圖像在畫布上縮放,但在保存時,我想用原始大小而不是畫布大小來保存它。但這種情況下的圖像會隨着畫布尺寸而保存,因此會更小。在這種情況下如何保存原始尺寸的圖像? – redGREENblue 2011-06-10 22:39:26