Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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
Java 画布作为图像视图/位图_Java_Android - Fatal编程技术网

Java 画布作为图像视图/位图

Java 画布作为图像视图/位图,java,android,Java,Android,我不能解决我的这个问题。我有两个图像被添加到画布中,并将作为一个对象处理,现在我需要将此画布作为位图/可绘制返回,因为 下面是我如何将2个位图添加到画布中的代码 Bitmap image1=BitmapFactory.decodeResource(getResources() ,R.drawable.icon1); Bitmap image2=BitmapFactory.decodeResource(getResources() R.drawable.icon2); Rect srcRect =

我不能解决我的这个问题。我有两个图像被添加到画布中,并将作为一个对象处理,现在我需要将此画布作为位图/可绘制返回,因为 下面是我如何将2个位图添加到画布中的代码

Bitmap image1=BitmapFactory.decodeResource(getResources() ,R.drawable.icon1);
Bitmap image2=BitmapFactory.decodeResource(getResources() R.drawable.icon2);
Rect srcRect = new Rect(0, 0, image.getWidth(), image.getHeight());
Rect dstRect = new Rect(srcRect);
dstRect.offset(15, 0);      
        canvas.drawBitmap(image, srcRect, dstRect, null);

        dstRect.offset(image.getWidth(), 0);    

        canvas.drawBitmap(image2, srcRect, dstRect, null);
       //return???????????
请找个人帮忙。
提前通知Tnx

您可以创建要绘制的位图

Bitmap image1=BitmapFactory.decodeResource(getResources() ,R.drawable.icon1);
Bitmap image2=BitmapFactory.decodeResource(getResources() R.drawable.icon2);
Bitmap result = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);//Create the canvas to your image
Rect srcRect = new Rect(0, 0, image.getWidth(), image.getHeight());
Rect dstRect = new Rect(srcRect);
dstRect.offset(15, 0);      
canvas.drawBitmap(image, srcRect, dstRect, null); //draw on it
dstRect.offset(image.getWidth(), 0);    
canvas.drawBitmap(image2, srcRect, dstRect, null);
return result;//result will have the drawed images from the canvas

你从哪里弄来的画布?如果来自位图,那么该obj现在将应用画布上绘制的任何内容

画布只是一种在位图或其支持的可绘制位图上进行绘制的方法。所以,如果您创建一个名为result的位图,然后从中获取画布,您可以返回它

Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
...do your stuff...
return result;

非常感谢你!整天都在试图解决这个问题!再次感谢你:)!我还有一个问题要问你,Marcos,基本上我的应用程序可以通过在画布上一次添加一幅图片来显示无限多幅图片。我的应用程序工作正常,但当我添加多达7幅图像时(每幅图像都是手机屏幕的两倍)就会崩溃。我相信这是由于内存使用。有没有办法释放内存/解压已附加到结果位图的图像?@Alanagh唯一可以采取的预防措施是.recycle()回收已在画布中绘制的位图。我正在用onDraw方法绘制,后来就迷路了:)。感谢您的及时回复和解释!