2010-05-25 6 views
7

나는 이것을 Motorola Droid에서 테스트했으며 의도 한대로 작동했습니다. 그러나 다음과 같을 수도 있습니다.안드로이드 비트 맵의 ​​일부를 겹쳐서 그려서도 안전합니까?

  1. 매우 비효율적입니다.
  2. 모든 Android 휴대 전화에서 작동하지 않을 수 있습니다.

코드 : 다른 플랫폼에서 비트 블리트를 수행 할 때 내가 말했듯이 내 테스트에서 잘 작동하는 것 같았다

/* Create a simple 100 by 100 bitmap */ 
Bitmap myBitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 

/* Create a canvas with which to draw on my bitmap */ 
Canvas myCanvas = new Canvas(myBitmap); 

/* Draw a subset of my bitmap onto itself, with the source rectangle and destination rectangle overlapping */ 
Rect sourceRect = new Rect(10, 0, 99, 99); 
Rect destRect = new Rect(0, 0, 89, 99); 
myCanvas.drawBitmap(myBitmap, sourceRect, destRect, null); 

하지만, 난 항상 안전을 보장 할 수 없었다, 메모리와 성능면에서 원본과 대상이 교차 할 때 하나의 grpahics 영역을 다른 영역으로 복사 할 수 있습니다.

나는 이에 대한 통찰력을 환영합니다.

답변

0

완벽하게 안전해야합니다. 교차로 - 무엇이 잘못 될 수 있습니까? 복사 할 지역에 복사하는 경우 코드를 포함한 구현에 따라 다릅니다. 최악의 경우 (실제로 가장 좋은 시나리오)는 바이트 단위로 복사되고 원본 및 대상 영역의 차이 인 strip의 "지브라"복제본입니다. 그러나 메모리에서도 대부분의 IO 작업이 버퍼링되므로 얼룩말에 버퍼/스트립 불일치가 발생할 수 있습니다. 버퍼, 스트립 크기 및 메모리의 실제 위치로 인해 다소 재미있을 수 있습니다.

즉 만화경에서는 이미지처럼 보일 수 있지만 완벽하게 안전합니다.

관련 문제