为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2019-11-11 14:54:11
为了制作一个简单的游戏,我使用了一个模板来绘制带有位图的画布,如下所示: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);  }   }   }       }
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

使用PorterDuff清除模式绘制透明颜色可以达到我想要的效果。


Canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR)


查看完整回答
反对 回复 2019-11-11
?
aluckdog

TA贡献1847条经验 获得超7个赞

Paint clearPaint = new Paint();

clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

canvas.drawRect(0, 0, width, height, clearPaint); 

这将删除图形矩形等,同时保留设置的位图。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 2449 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信