我正在构建一个android应用程序,并且陷入了一件简单的事情:如何将Canvas对象绘制(或“添加”)到另一个Canvas对象,例如“合并”它们?
如果那不可能,那么最好的解决方案是什么?
谢谢!
最佳答案
这完全取决于您的实现。
如果每个“画布”直接从每个框架的数组(形状等)中绘制对象,则可以简单地将一个数组附加到另一个。这样,您的Canvas不需要进行大幅度的更改,只需将一个数组添加到另一个数组中(可能是ArrayList
的方式)。
如果不是上述情况,则可能需要进行一些更剧烈的更改。遇到类似问题时,我创建了一个名为commitChanges()
的新方法,该方法对现有Canvas进行了一系列更改(在顶部添加行等)。
我首先使受影响的区域无效,然后创建了Canvas大小为Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGBA_8888);
的位图。
接下来,我从该位图创建了一个画布:Canvas workingDrawing = new Canvas(bmp);
。
然后,我将所需的所有内容都绘制到了新的画布上。在这种情况下,那将是来自您的画布之一的数据。
现在,在另一个画布中,您必须获取刚刚绘制的位图,然后将其绘制到此画布上。像这样:canvas.drawBitmap(yourDrawnBitmap, 0.0f, 0.0f, null);
。
我认为您将面临的困难是将数据从一个Canvas传输到另一个Canvas。但是,无论您采用哪种实现方式,上述方法之一都应该为您有效地工作。