Android,canvas : How do I clear (delete contents of) a canvas (= bitmaps), 生活在surfaceView 中?

标签 android android-canvas surfaceview

为了制作一个简单的游戏,我使用了一个模板,该模板使用这样的位图绘制 Canvas :

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); } }

( Canvas 在“run()”中定义/SurfaceView 位于 GameThread 中。)

我的第一个问题是如何清除(或重绘)整个 Canvas 以进行新布局?
其次,我怎样才能只更新屏幕的一部分?

// 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);  }   }   }       }

最佳答案

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

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

关于Android,canvas : How do I clear (delete contents of) a canvas (= bitmaps), 生活在surfaceView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5729377/

相关文章:

Android NDK GL ES 2.0 渲染到纹理(通过帧缓冲区)导致模糊/低分辨率图像

java - Android:我在操作栏中设置了一些图标,但它们没有显示在我的设备上

java - 在android中使用surfaceview在应用程序中使用相机

android - 从 SurfaceView 获取帧

环形进度条上的 Android 圆形边缘

android - 与 child 的 LiveData 不兼容的类型作为 parent 的 LiveData

android 在多行文本上绘制描边

android - Android 中使用 Canvas 和 SurfaceView 时的 Thread 或 Runnable

android - 在 android 中使用其他 View 在屏幕上绘图

android - 如何将 AnimationDrawable 放置在 SurfaceView Canvas 上