9

我在一个扩展表面视图并实现可运行的类中有这个代码我能够使用该类基本上允许您使用不同的颜色等绘制到画布上。我正在尝试获得一种方法,该方法允许我在绘制图像后保存图像,这就是方法。无论我做什么,我都会得到一个黑色的图像,上面什么都没有。有任何想法吗?

我启用了缓存绘图

Objective get a bitmap image from a custom SurfaceView 我已经用尽了在这里查看其他帖子的选项,但没有找到任何工作。希望最近有一个新的解决方案。非常感谢

public Bitmap getImage() {
            Bitmap bitmap = Bitmap.createBitmap(this.getWidth(),
                    this.getHeight(), Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            this.draw(canvas);
            return bitmap;
        }
4

1 回答 1

1

您的问题只有在您最后的评论中才变得清晰。在您上面发布的代码中,您返回的是return bitmap. 这将返回局部变量bitmap。这个局部变量是完全空白的。您可能正在代码中的其他位置绘制位图或将图像与其关联。但是您上面的代码中的位图实例是空白的,并且仅在函数本地。您不能期望它返回您更新的最新位图。

现在,在您发表评论后,我在 Google 上搜索“获取当前表面视图的位图”,这让我得到了这样的答案:从 SurfaceView 创建位图

在那个问题上,显然是通过扩展 View 而不是 SurfaceView 来解决的。绘图缓存仅适用于视图。

更新:遵循以下教程。根据您粘贴的代码,尚不清楚错误是什么。绘制到 SurfaceView 需要做很多事情,我不确定你是否已经完成了这些,我不能要求每一个这样的缺失项目。我按照以下教程进行了基本图形项目。你需要阅读它们,看看你是否遗漏了什么。

Canvas 绘图教程:

在 android所有部分中使用 Graphics。

安卓 2D

于 2013-01-06T12:25:41.570 回答