긁는 복권 형식이라고 생각하시면되요
이미지 뷰로 뒤에 이미지를 깔꼬 그위에 비트맵으로 이미지를 올려서 핑거페인트를 써서 이 비트맵 이미지를 지우고 싶은데요
비트맵을 지울때 어떤 방식으로 지워줘야 할지 감이 안잡히네요.
핑거페인트로 투명으로 칠하면 될줄 아랐는데 안되네요.
좋은 방법이 없을까요?
도움 될만한 예제소스 같은것두 올려 주시면 감사하겠습니다
뷰는 하나만 있으면 되구요 대신 커스텀 뷰여야 합니다.
제가 알고 있는 방식은 2가지가 있습니다.
1. 2개의 비트맵을 그리는데 나중에 그리는 비트맵은 Xfermode를 이용하여 터치한 곳을 뻥 뚫는 것입니다.
예제는 ApiDemos 보면 있습니다.
2. 2개의 비트맵만 가지고 있고 1개만 먼저 draw 합니다. 그 후 터치한 곳 좌표를 기억해서
먼저 그려진 비트맵의 픽셀을 2번째 비트맵의 픽셀로 변경해 주는 것입니다.
비트맵의 getPixel() setPixel()을 이용하면 됩니다.
(좌표 주변으로 일정한 크기를 정해서 getPixels, setPixels를 사용하는게 좋습니다.)
두 경우 해보시면 알겠지만 디바이스에 따라서 성능 차이가 있습니다.
성능을 보완하기 위해서 매 터치 이벤트(move) 마다 하는게 아니라 일정 양을 모아서 한꺼번에 처리해 주는 것이 좋습니다.
그리고 터치 좌표를 기억하여 베지어곡선 형태를 계산 해서 지울 패스를 생성하는게 더 자연스럽습니다.
그리고 invalidate()와 invalidate(Rect rect)를 테스트 해보시고 성능에 따라서 결정하세요.
상식적으로는 invalidate(Rect rect)를 하여 일정 부분만 새로고침 하는게 좋을 것 같은데
일부 단말은 전체를 새로 고치는 invalidate() 가 더 성능이 좋을 수도 있습니다.
궁금 한게 있는데요 ApiDemos 에서 예제 말슴하시는계 BitmapMesh 맞나요?
답변 감사합니다..
제가 아직 초보개발자라 이해는 하겠는데 어떻게 만들어야 할지 감이 안잡히네여ㅋ
로그인 유지
뷰는 하나만 있으면 되구요 대신 커스텀 뷰여야 합니다.
제가 알고 있는 방식은 2가지가 있습니다.
1. 2개의 비트맵을 그리는데 나중에 그리는 비트맵은 Xfermode를 이용하여 터치한 곳을 뻥 뚫는 것입니다.
예제는 ApiDemos 보면 있습니다.
2. 2개의 비트맵만 가지고 있고 1개만 먼저 draw 합니다. 그 후 터치한 곳 좌표를 기억해서
먼저 그려진 비트맵의 픽셀을 2번째 비트맵의 픽셀로 변경해 주는 것입니다.
비트맵의 getPixel() setPixel()을 이용하면 됩니다.
(좌표 주변으로 일정한 크기를 정해서 getPixels, setPixels를 사용하는게 좋습니다.)
두 경우 해보시면 알겠지만 디바이스에 따라서 성능 차이가 있습니다.
성능을 보완하기 위해서 매 터치 이벤트(move) 마다 하는게 아니라 일정 양을 모아서 한꺼번에 처리해 주는 것이 좋습니다.
그리고 터치 좌표를 기억하여 베지어곡선 형태를 계산 해서 지울 패스를 생성하는게 더 자연스럽습니다.
그리고 invalidate()와 invalidate(Rect rect)를 테스트 해보시고 성능에 따라서 결정하세요.
상식적으로는 invalidate(Rect rect)를 하여 일정 부분만 새로고침 하는게 좋을 것 같은데
일부 단말은 전체를 새로 고치는 invalidate() 가 더 성능이 좋을 수도 있습니다.