2012-05-04 5 views
0

배경 이미지가 처음 그려지는 캔버스가 있습니다. 그런 다음 다른 이미지가 배경 위에 그려집니다. 화면에서 움직이는 그라디언트 오브젝트가 있습니다. 그라데이션에 사용 된 페인트는 Xfermode가 으로 설정되어 있습니다. paint.setXfermode (new PorterDuffXfermode (PorterDuff.Mode.DST_IN));선택적으로 안드로이드 캔버스 마스킹

효과는 작동하지만 배경 이미지에도 적용됩니다. 맨 위에있는 마스크의 영향을받는 배경 이미지를 피하려면 어떻게해야합니까?

답변

0

페인트가 캔버스 전체에 적용됩니다. 배경이 그라디언트 객체와 동일한 캔버스를 사용하여 그려지기 때문에 물론 사용자 정의 Xfermode를 사용하면 배경에 영향을줍니다!

가능한 한 가지 해결책은 별도의 Bitmap 개체로 백업 된 두 개의 다른 Canvas 개체에서 배경과 전경을 분리 한 다음 Photoshop에서와 같이 레이어를 병합하는 것입니다. 얼마 전 StackOverflow에서이 작업을 수행하는 샘플 코드를 게시했습니다. 여기에 대한 링크는 다음과 같습니다.

https://stackoverflow.com/a/10370828/1350375

관련 문제