How to save objects previously drawn to the Canvas on a redraw?

久未见 提交于 2019-12-21 06:06:27

问题


Every time a SurfaceView is redrawn, things that were previously drawn are erased. How do I save their state so that my loop will add new objects to the screen without erasing the old ones?


回答1:


Draw with a Bitmap:

Bitmap mDrawBitmap;
Canvas mBitmapCanvas;
Paint mDrawPaint = new Paint();

@Override
public void onDraw(Canvas canvas) {

    if (mDrawBitmap == null) {
        mDrawBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
        mBitmapCanvas = new Canvas(mDrawBitmap);
    }

    // draw on the btimapCanvas
    //... and more
    mBitmapCanvas.drawWhatever(...);

    // after drawing with the bitmapcanvas,
    //all drawn information is stored in the Bitmap       

    // draw everything to the screen
    canvas.drawBitmap(mDrawBitmap, 0, 0, mDrawPaint);
}

In that way, "mDrawBitmap" will always contain the currently drawn state. If you want to, you can clear it by calling mBitmapCanvas.drawColor(Color.WHITE);



来源:https://stackoverflow.com/questions/24376122/how-to-save-objects-previously-drawn-to-the-canvas-on-a-redraw

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!