获取 Canvas 的一部分作为位图

getting a part of a Canvas as a Bitmap

我正在尝试获取 SurfaceView 的 canvas 的一部分并将其保存为 Bitmap
我看到的每个答案都是创建一个新的 Canvas 并将其传递给您的 Bitmap 给构造函数。

因为我正在使用 SurfaceView,我正在使用 SurfaceHodlermSurfaceHolder.lockCanvas(); 来获取我的 canvas,因此我无法创建新的 Canvas和我的 Bitmap.

如何在不创建新的 canvas 的情况下将 canvas 的一部分添加到 Bitmap

一个Canvas是渲染界面。您无法获得其中的一部分或全部,因为它只是界面。像素被绘制到位图或表面,因此如果您需要它们,您要么必须读回它们,要么重新绘制它们。

无法从 Surface 检索像素 -- 它是生产者-消费者对的生产者端。最简单的方法是用位图支持的新 Canvas 重复绘图命令。

另见