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 回答