Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将一个画布复制到另一个画布?_Android_Android Canvas - Fatal编程技术网

Android 如何将一个画布复制到另一个画布?

Android 如何将一个画布复制到另一个画布?,android,android-canvas,Android,Android Canvas,我已经在画布中绘制了一些矩形,我想将这些矩形复制到另一个画布中。通常讨论的使用位图的解决方案不起作用,因为我在此画布中没有使用位图,没有图像,只有这些矩形 如何做到这一点?您是否尝试过将绘制时指定给矩形的属性保存到第一个画布,然后根据这些属性在第二个画布上重新绘制它们?也许您可以尝试为第一个画布创建一个矩形对象,并将其传递给第二个画布上的canvas.drawRect()。您是否尝试过在绘制到第一个画布时保存给定给矩形的属性,然后根据这些属性在第二个画布上重新绘制它们?也许您可以尝试为第一个画布

我已经在画布中绘制了一些矩形,我想将这些矩形复制到另一个画布中。通常讨论的使用位图的解决方案不起作用,因为我在此画布中没有使用位图,没有图像,只有这些矩形


如何做到这一点?

您是否尝试过将绘制时指定给矩形的属性保存到第一个画布,然后根据这些属性在第二个画布上重新绘制它们?也许您可以尝试为第一个画布创建一个矩形对象,并将其传递给第二个画布上的canvas.drawRect()。

您是否尝试过在绘制到第一个画布时保存给定给矩形的属性,然后根据这些属性在第二个画布上重新绘制它们?也许您可以尝试为第一个画布创建一个Rect对象,并将其传递给第二个画布上的canvas.drawRect()。

您可以使用画布创建位图,然后在该位图上绘制

bitmap =  Bitmap.createBitmap(50,50,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// drawn some rects into canvas 
现在,您可以使用位图在任何画布上进行绘制

Canvas canvas1 = new Canvas(bitmap);
Canvas canvas2 = new Canvas(bitmap);  
或者,如果您已经有画布:

canvas.drawBitmap(bitmap, 0, 0, paint);

通过这种方式,您只能绘制一次矩形,而不是在每个画布上绘制。

您可以使用画布创建位图,然后在该位图上绘制

bitmap =  Bitmap.createBitmap(50,50,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// drawn some rects into canvas 
现在,您可以使用位图在任何画布上进行绘制

Canvas canvas1 = new Canvas(bitmap);
Canvas canvas2 = new Canvas(bitmap);  
或者,如果您已经有画布:

canvas.drawBitmap(bitmap, 0, 0, paint);

这样,您只需在每个画布上绘制一次矩形。

请提供代码,以便我们推荐任何替代选项。画布也总是在位图上绘制,但没有从画布中提取位图的方法。请提供代码,以便我们推荐任何替代选项。画布也总是在位图上绘制,但没有从画布中提取位图的方法。如果必须提前确定位图的宽度和高度,如何确定位图的宽度和高度为整个画布?您可以使用
createScaledBitmap(位图src、int-dstWidth、int-dstWidth、布尔过滤器)
另请参见
canvas.drawBitmap(位图位图、Rect src、Rect dst、Paint Paint Paint)
。这将绘制指定的位图,自动缩放/转换以填充目标矩形如果必须提前确定位图宽度和高度,如何确定整个画布的位图宽度和高度?您可以使用
createScaledBitmap(位图src、int dstWidth、int dstHeight、布尔过滤器)
另请参见
canvas.drawBitmap(位图位图、Rect src、Rect dst、Paint Paint)
。此操作将绘制指定的位图,并自动缩放/转换以填充目标矩形