2017-12-13 10 views
0

다른 비트 맵 위에 하나의 비트 맵 (png 파일)을 추가하고 장치에 저장하려고합니다. 첫 번째 부분을 제외하고 모두 잘 작동합니다. 내 코드두 비트 맵 병합 관련 문제

비트 :로드 파일을 변환

1 비트 맵

loadedBitmap = e.target.content as Bitmap; 
clonedBitmap = new Bitmap(loadedBitmap.bitmapData.clone()); 

bitmapData = new BitmapData(e.target.content.width, e.target.content.height); 
bitmapData.draw(clonedBitmap); 

앱 내에서 발생 2초 맵

genBitmapData = new BitmapData(bgWidth, bgHeight, false); 
genBitmap = new Bitmap(genBitmapData); 
의 BitmapData에 clonedBitmap (외부 파일)에 추가

3

var positionMatrix : Matrix = new Matrix(1,0,0,1,0,0); 
genBitmapData.draw(clonedBitmap, positionMatrix); 

단계 세의 문제는로드 된 파일 장치의 저장소에 저장시 애플리케이션에 의해 생성 된 비트 맵하에 끝나게 clonedBitmap이다 . 순서를 바꾸면 :

bitmapData.draw(genBitmap, positionMatrix); 

로드 된 비트 맵이 파일을 저장할 때 전혀 표시되지 않는 동안 생성 된 비트 맵 만 표시되거나 표시됩니다. 달성하고 싶은 것은 clonedBitmap (외부 png 파일)을 genBitmap 위에 놓고 BitmapData 객체와 함께 저장하여 내 장치에 저장할 수있게하는 것입니다.

팁이 있으면 감사하겠습니다.

+0

여기 정말 이상한 일을합니다. 두 개의 ** Bitmap ** 오브젝트로 작업하고 원하는대로 z 순서대로 정렬 할 수 있습니까? 또한 원본을 복제 할 수있는 ** draw ** inng로 비트 맵 복제 ** BitmapData **는 또 다른 이상한 일입니다. – Organis

답변

0

비트 맵 위에 비트 맵을 그릴 때 어딘가에 투명하게 보이도록 비트 맵을 오버레이해야합니다. 그렇지 않으면 모든 하위 비트 맵의 ​​픽셀이 상위 레이어로 덮어 쓰여집니다. 따라서 알파 채널 (투명도 = true)을 사용하여 비트 맵을 만들고, 무언가를 그린 다음 (적어도 어딘가에서) 상위 레이어 비트 맵도 투명하게 만든 다음 단일 레이어의 첫 번째 레이어를 그립니다.BitmapData 목적.

비트 맵을 변환하지 않으므로 BitmapData.copyPixels() 메서드를 사용하는 것이 좋습니다.

0

코드가 제대로 작동합니다. 나는 간과하고 잘못된 기능에 배치, 문제가 발생했습니다.