2011-04-14 68 views
2

我不能让我的头,我有这个问题。我有被添加到画布,将被视为一个对象2倍的图像,现在我需要回到这个画布位图/绘制,因为 下面是代码,我怎么加2位图转换为画布画布作为ImageView /位图

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提前!

回答

5

您可以创建一个位图来绘制。

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 
+0

太谢谢你了!正试图解决这一整天!再次感谢你:)! – Alanagh 2011-04-14 21:03:51

+0

我为你提供的另一个问题Marcos,基本上我的应用程序将允许通过一次一个地添加一个画布来显示无限图像集。我的应用程序工作正常,但是当我添加7个图像时(它们每个都是手机屏幕的两倍),它会崩溃。我相信这是由于内存使用。有什么方法可以释放内存/破坏已经附加到结果位图的图像吗? – Alanagh 2011-04-15 01:21:53

+1

@Alanagh唯一的预防措施是.recycle()您已经在Canvas中绘制的位图。 – 2011-04-15 13:02:39

1

你从哪里得到画布?如果来自位图,那么该obj现在将在您应用的画布上绘制任何东西。

画布只是一种绘制位图或绘图的方法。所以如果你创建一个称为结果的位图,然后从中获取你的画布,你可以返回它。

如..

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

我在onDraw方法中绘制它,然后迷路:)。感谢您的及时回复和解释! – Alanagh 2011-04-14 21:04:56