【问题标题】:Canvas to Bitmap画布到位图
【发布时间】:2014-02-11 14:04:54
【问题描述】:

我的程序是一个简单的 android 填充游戏应用程序,即用户可以在画布上绘画和绘制一些东西。现在我想为用户提供一个共享选项。我想我必须从将画布复制到位图对象开始。我找不到令人满意的答案,因为通常建议“创建一个新的画布,然后......”但我得到了一个这样的画布,

Canvas canvas = holder.lockCanvas();

然后我使用它。那么,如何将当前画布复制到位图对象?

谢谢

【问题讨论】:

  • 当我使用Bitmap abc = Bitmap.createBitmap(400, 400, Bitmap.Config.ARGB_8888); Canvas canvas = holder.lockCanvas(); canvas.setBitmap(abc); 然后,它只是黑屏。
  • I guess that I must 为什么要猜?为什么不阅读文档?
  • 我读过它们。有几个选项我尝试过但都失败了。我想正确的方法是将画布复制到位图对象。但我没能成功。然后,我在这里问。提问的方式不合适吗?

标签: android canvas bitmap locking flood-fill


【解决方案1】:

按照 Maulik.J 的建议,我再次查看了 converting a canvas into bitmap image in android

我无法从这个链接的有点接近的表达中理解。但是,然后我看到下面的文字取自 http://developer.android.com/guide/topics/graphics/2d-graphics.html#draw-with-canvas 。所以,我在 Maulik.J 和以下文本的帮助下解决了这个问题:

位图始终是画布所必需的。你可以像这样设置一个新的画布:

Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);

现在您的 Canvas 将绘制到定义的位图上。在使用 Canvas 绘制之后,您可以使用 Canvas.drawBitmap(Bitmap,...) 方法之一将您的位图带到另一个 Canvas。建议您最终通过 View.onDraw() 或 SurfaceHolder.lockCanvas() 提供的 Canvas 绘制最终图形

我创建了第二个 Canvas 对象,其位图与我的真实画布具有相同的尺寸,我在第二个临时画布上绘制了所有插图。然后,我在我的真实画布上绘制了它的位图。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多