0

ユーザーのローカルハードドライブからサイズ640x360のキャンバスに画像を描画するフレックスアプリケーションを開発しています。

ユーザーはより大きな解像度の画像を選択でき、キャンバス サイズにスケーリングされます。

ただし、ユーザーが 3000x2000 などのより大きな解像度の画像を選択した場合、スケーリングには多くの時間がかかり、スケーリングが完了するまでアプリケーションがフリーズします。

画像をより高速にスケーリングする方法や、スレッドの種類を実行できる方法はありますか?

以下のように、マトリックスを使用して画像をスケーリングしています。

    var mat:Matrix = new Matrix();
    var scalex:Number = canvasScreen.width/content.width;
    var scaley:Number = canvasScreen.height/content.height;
    mat.scale(scalex,scaley);           

    canvasScreen.graphics.clear();      
    canvasScreen.graphics.beginBitmapFill(content.bitmapData,mat);
4

2 に答える 2

0

あなたの問題はイメージの使用だと思います。キャンバスにイメージをロードしてスケーリングするアプリケーションを開発していますが、大きな解像度でも問題なく動作します。コードを書くと役立つかもしれません:

public class ImageObject extend Canvas
{
    public var image :Image;

    ..................
    ..................

    override protected function childrenCreated() : void
    {
        super.childrenCreated();
        addChild( image );
    }

    public function scaleImage():void
    {
        // Caluculate your xVal and yVal here

        var m:Matrix = new Matrix();
        m.scale( xVal, yVal );
        m.concat( image.transform.matrix );

        image.transform.matrix = m;
    }
}

画像を子として ImageObject に追加できない場合は、ex 用に 2 つのコンテナーを作成してみてください。

public class ImageObject extend Canvas
{

public var imageContainer :Canvas;
public var otherContainer :Canvas;

...........................
...........................

override protected function childrenCreated() : void
{
        super.childrenCreated();
        addChild( imageContainer); // add here your image
        addChild( otherContainer ); // here other objects
}
于 2010-03-19T10:19:00.820 に答える
0

画像タグに「scaleContent」プロパティを設定しないでください...画像は、画像タグに収まるようにスケーリングされます。

于 2010-03-19T07:29:48.310 に答える