我的下一堂课有问题:
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系统 - 但是它不起作用导致我的绘图在其他线程上...在这种情况下,任何人都知道该怎么做?
答案 0 :(得分: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 );