为了制作一个简单的游戏,我使用了一个模板来绘制带有位图的画布,如下所示: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)
aluckdog
TA贡献1847条经验 获得超7个赞
Paint clearPaint = new Paint();
clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawRect(0, 0, width, height, clearPaint);
这将删除图形矩形等,同时保留设置的位图。
- 3 回答
- 0 关注
- 2449 浏览
添加回答
举报
0/150
提交
取消