如何清除(删除)画布(=位图),生活在surfaceView中?

发布时间:2024-11-25 05:49

如何删除已配对的蓝牙设备:在设备列表中找到对应项,点击‘删除设备’。 #生活技巧# #数码产品使用技巧# #蓝牙设备配对教程#

社区首页 >问答首页 >如何清除(删除)画布(=位图),生活在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); } }

(画布在“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); } } } }

回答 21

Stack Overflow用户

回答已采纳

发布于 2011-04-20 12:01:34

如何为新的布局清除(或重画)整个画布(=尝试游戏)?

只需调用Canvas.drawColor(Color.BLACK),或者您想用来清除Canvas的任何颜色。

和:如何只更新屏幕的一部分?

没有这种方法只更新“屏幕的一部分”,因为Android操作系统在更新屏幕时会重新绘制每个像素。但是,当您不清除Canvas上的旧图形时,旧图形仍然在表面上,这可能是“只更新屏幕的一部分”的一种方法。

所以,如果你想“更新屏幕的一部分”,只要避免调用Canvas.drawColor()方法即可。

Stack Overflow用户

发布于 2012-06-04 13:37:36

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

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

Stack Overflow用户

发布于 2012-09-04 12:13:43

我在谷歌群组里找到了这个,这对我很有效..

Paint clearPaint = new Paint(); clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); canvas.drawRect(0, 0, width, height, clearPaint);

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

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持

原文链接:

https://stackoverflow.com/questions/5729377

复制

网址:如何清除(删除)画布(=位图),生活在surfaceView中? https://www.yuejiaxmz.com/news/view/251662

相关内容

AutoCAD中如何快速删除图形中的所有点?
如何在Word中快速删除空白页:5个实用技巧
如何在 Windows 11 中删除 Microsoft 家庭安全 ▷➡️
WPS文档清理技巧:如何快速删除空白页面
AutoCAD中如何快速删除多段线上多余的顶点?
如何快速删除PDF中的空白页:步骤与技巧
WPS Word文档空白页删除指南:快速清除技巧
如何轻松批量删除 iPhone 中的照片 [5 种方法]
SQL Server大表如何快速删除数据
镜头随人物而动,视频编辑服务让用户稳站C位现如今,视频是用户记录生活最热门的方式,各种App在发布视频界面都提供了视频简

随便看看