1
我正在构建一个android应用程序,并且我陷入了一件简单的事情:我如何绘制(或“添加”)Canvas对象到另一个Canvas对象,如“合并”它们?如何在画布上绘制画布
如果这是不可能的,那么最好的解决方案是什么?
谢谢!
我正在构建一个android应用程序,并且我陷入了一件简单的事情:我如何绘制(或“添加”)Canvas对象到另一个Canvas对象,如“合并”它们?如何在画布上绘制画布
如果这是不可能的,那么最好的解决方案是什么?
谢谢!
这完全取决于您的实施。
如果每个Canvas直接从每个帧的数组(形状等)绘制对象,则可以简单地将一个数组附加到另一个数组。这样,您的画布不需要大幅改动,只需要将一个阵列添加到另一个阵列中(可能需要一个ArrayList
)。
如果以上情况并非如此,您可能需要做出一些更大的改变。当我遇到类似的问题时,我创建了一个名为commitChanges()
的新方法,它为现有Canvas添加了一系列更改(在顶部添加线等)。
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGBA_8888);
。Canvas workingDrawing = new Canvas(bmp);
。canvas.drawBitmap(yourDrawnBitmap, 0.0f, 0.0f, null);
。我想你会面临的困难是将数据从一个画布转移到另一个。但是,无论您的实施如何,上述方法之一应该对您有效。
我为机器人做了一种“模拟器”,用于竞赛,但是有很多“零件”相对于其他人移动,所以我必须手动计算每个相关部分。我的想法是创建画布,并与现有画面合并,以便定位和旋转不成问题。例如:身体有一个头,腿,脚...当我渲染“身体”时,它会调用renderHead,并获得头部的画布,然后将放置在正确的位置和旋转。如果Head有眼睛,那么在drawHead中,我会调用drawEyes,然后加入drawHead眼睛。 –
在这种情况下你可能会做的是让屏幕Canvas对象具有各自的Bitmap对象。在每个Canvas中,您可以绘制尽可能多的机器人部件(比如,一只手和一只前臂)。然后,您可以将该Canvas的位图(以及所有其他)渲染到“主”Canvas上([link](http://stackoverflow.com/questions/4160149/how-to-draw-on-bitmap-in-安卓))。这在系统上可能相当高,所以如你所说,你更好的选择是相对计算每个部分(如同一只手移动,它也移动手臂)。这样,你只需要一个Canvas。 – Eric
谢谢!我会继续做大计算......:D –