Android,canvas:如何清除(删除)位于surfaceView中的画布(=位图)的内容?

为了制作一个简单的游戏,我使用了一个模板来绘制带有位图的画布,如下所示:


private void doDraw(Canvas canvas) {

    for (int i=0;i<8;i++)

        for (int j=0;j<9;j++)

            for (int k=0;k<7;k++)   {

    canvas.drawBitmap(mBits[allBits[i][j][k]], i*50 -k*7, j*50 -k*7, null); } }

(画布在“ run()”中定义,/ SurfaceView位于GameThread中。)


我的第一个问题是如何清除(或重新绘制)整个画布以形成新布局?

其次,如何更新屏幕的一部分?



// This is the routine that calls "doDraw":

public void run() {

    while (mRun) {

        Canvas c = null;

        try {

            c = mSurfaceHolder.lockCanvas(null);

            synchronized (mSurfaceHolder) {

                if (mMode == STATE_RUNNING) 

                    updateGame();

                doDraw(c);          }

        } finally {

            if (c != null) {

                mSurfaceHolder.unlockCanvasAndPost(c);  }   }   }       }


梦里花落0921
浏览 2450回答 3
3回答

尚方宝剑之说

使用PorterDuff清除模式绘制透明颜色可以达到我想要的效果。Canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR)

aluckdog

Paint clearPaint = new Paint();clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));canvas.drawRect(0, 0, width, height, clearPaint); 这将删除图形矩形等,同时保留设置的位图。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android