2009-07-09 7 views
0

私はflexでビジュアルエディタを作成しており、ユーザーが自分のプロジェクトをイメージ形式にエクスポートできるようにする必要があります。しかし、私は1つの問題があります。キャンバスのサイズは固定されています。ユーザーがこれらのサイズの外にある要素を追加すると、いくつかのスクロールバーが追加されました。ユーザーはプロジェクトを継続します。キャンバスのスナップショットを撮りたいときは、キャンバスの目に見える部分をスクロールバーで表示するだけです。フルサイズキャンバスのイメージを取得する方法は?Flexでの表示オブジェクトのスナップショット3

私が見つけた唯一の解決策は、キャンバスの子オブジェクトの位置とサイズを確認し、それに合わせて再調整することでした。スナップして元のサイズに戻します。しかし、それはうーん...あまりにも複雑だと思います。いくつかの「簡単な方法」がありますか?

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> 
<mx:Script> 
    <![CDATA[ 
     import mx.graphics.ImageSnapshot; 

     private function SnapshotButtonHandler():void 
     { 
      var snapshot:ImageSnapshot = ImageSnapshot.captureImage(AppCanvas); 
      var file:FileReference = new FileReference(); 
      file.save(snapshot.data, "canvas.png"); 
     } 
    ]]> 
</mx:Script> 
<mx:Canvas id="AppCanvas" width="800" height="300" backgroundColor="0xFFFFFF"> 
    <mx:Box x="750" y="100" width="100" height="100" backgroundColor="0xCCCCCC" /> 
</mx:Canvas> 
<mx:Button id="SnapshotButton" label="take snapshot" click="SnapshotButtonHandler()" /> 
</mx:Application> 

答えて

0

私はそのコンテナのスナップショットを行い、その後...それはそれで目的に応じたサイズで...多分UIComponentにトリックを行うだろう適応スクロール可能なキャンバスの中に一つの容器を置きます...私は

BaseCanvasを発見したキャンバスのみいわば、スクロールバーが追加されます...

greetz

back2dos

0

ソリューション - キャンバスのwi固定の高さと幅 EditCanvas - paramsが子の位置に依存する動的キャンバス。

スナップショットはEditCanvasから取得します。コードの一部

private function SnapshotButtonHandler():void 
{ 
    var snapshot:ImageSnapshot = ImageSnapshot.captureImage(EditCanvas); 
    var file:FileReference = new FileReference(); 
    file.save(snapshot.data, "canvas.png"); 
} 
private function ResizeCanvas():void 
{ 
    for each (var child:* in AppCanvas.getChildren()) 
    { 
     if ((child.x + child.width) > AppCanvas.width) 
      AppCanvas.width = child.x+child.width; 
     if ((child.y + child.height) > AppCanvas.height) 
      AppCanvas.height = child.y+child.height; 
    } 
} 

<mx:Canvas id="BaseCanvas" width="300" height="200"> 
    <mx:Canvas id="EditCanvas" width="300" height="200" backgroundColor="0xFFFFF0" horizontalScrollPolicy="off" verticalScrollPolicy="off"/> 
</mx:Canvas> 
0

krishna:ビルドパスでFlash Player 10をターゲットに設定していることを確認してください。

関連する問題