2011-04-14 3 views
2

나는이 문제에 대해 머리가 아프다. 나는 캔버스에 추가 된 하나의 개체로 처리됩니다 2 개 이미지, 지금은 여기에 코드이기 때문에 캔버스캔버스 (ImageView/Bitmap)

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

+0

Marcos의 또 다른 질문입니다. 기본적으로 내 앱은 캔버스에 한 번에 하나씩 추가하여 무한한 이미지 집합을 표시 할 수있게합니다. 내 응용 프로그램은 정상적으로 작동하지만 최대 7 개의 이미지를 추가하면 충돌이 발생합니다 (각 이미지는 전화 화면의 두 배입니다). 메모리 사용으로 인한 것 같습니다. 결과 비트 맵에 이미 첨부 된 이미지를 메모리에서 비우는 방법이 있습니까? – Alanagh

+1

@Alanagh 캔버스에 이미 그려 둔 비트 맵을 .recycle()하는 것만 큼주의 할 수 있습니다. –

1

어디에서 캔버스를 얻었습니까? 비트 맵에서 가져온 경우 해당 obj는 이제 적용된 캔바스에서 그린 모든 것을 갖게됩니다.

캔버스는 지원되는 비트 맵 또는 드로어 블 위에 그릴 수 있습니다. 따라서 result라는 비트 맵을 만든 다음 캔버스를 반환하면 그냥 반환 할 수 있습니다. 마찬가지로

..

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

나는 그것을 onDraw 메서드에서 그리기 때문에 나중에 잃어 버렸습니다. :) 귀하의 신속한 회신과 설명에 감사드립니다! – Alanagh