如何在画布上绘制画布

时间:2012-06-06 17:03:04

标签: java android android-canvas

我正在构建一个Android应用程序,我遇到了一个简单的问题:我如何绘制(或“添加”)Canvas对象到另一个Canvas对象,比如“合并”它们?

如果那不可能,那么这样做的最佳解决方案是什么?

谢谢!

1 个答案:

答案 0 :(得分:9)

这完全取决于您的实施。

  • 如果每个Canvas直接从每个帧的数组(形状等)中绘制对象,则只需将一个数组附加到另​​一个数组即可。这样,您的Canvas不需要进行大幅改动,只需要将一个数组添加到另一个(可能需要ArrayList)。

  • 如果不是上述情况,您可能需要进行一些更大幅度的更改。当我遇到类似的问题时,我创建了一个名为commitChanges()的新方法,它为现有的Canvas添加了一系列更改(在顶部添加了行等)。

    1. 我首先使受影响的区域无效,然后创建了一个大小为Canvas的位图:Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGBA_8888);
    2. 接下来,我从该位图创建了一个画布:Canvas workingDrawing = new Canvas(bmp);
    3. 然后,我把所需的一切都画到了新的画布上。在这种情况下,这将是您的一个画布的数据。
    4. 现在,在你的另一个Canvas中,你必须得到你刚绘制的Bitmap,然后将它绘制到这个Canvas上。像这样:canvas.drawBitmap(yourDrawnBitmap, 0.0f, 0.0f, null);

我认为您将面临的困难是将数据从一个Canvas转移到另一个Canvas。但是,无论您的实现如何,上述方法之一都应该对您有效。