0

次のクラスに問題があります。

public class MyView extends SurfaceView implements Runnable {

    public void run() {
        Canvas c = holder.lockCanvas();
        c.drawARGB( 255, 0, 255, 80 );
        for ( short i = 0; i < bitmapsArr.size(); i++ ) {
            c.drawBitmap( bitmap.get( i ), 100, 50, null );
        }
        holder.unlockCanvasAndPost( c );
    }

    public void saveCanvasToFile( String filename ){

        // ???

    }

}

別のスレッドに配置されたキャンバスに描画します。このキャンバスをファイルに保存したいのですが、方法がわかりません。DrawingCache システムを使用しようとしましたが、他のスレッドで図面が原因で機能しません...この場合の対処方法を知っている人はいますか?

4

1 に答える 1

0

解決策を見つけました。実際には、すべての描画を新しいキャンバスに再描画する必要があります。例:

Bitmap bitmap = Bitmap.createBitmap( this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888 );
Canvas c1 = new Canvas( bitmap );
c1.drawARGB( 255, 0, 255, 80 );
for ( short i = 0; i < bitmapsArr.size(); i++ ) {
    c1.drawBitmap( bitmap.get( i ), 100, 50, null );
}
// and then you can save your bitmap with:
// bitmap.compress( Bitmap.CompressFormat.PNG, 90, fileoOutputStream );
于 2012-11-01T00:12:44.963 に答える