2010-07-14 1 views
4

내 앱 중 하나에서 CoreGraphics 프레임 워크 (CGContextRef 등)를 사용하여 그림을 그리는 UIImage 부분을 지우고/투명한 획을 시도하고 있습니다. 잘 과정에서 "removeAllObjects"메시지를 호출하여 한 번에 그림을 지울 수 있지만 그림을 그리는 방법을 알아낼 수 없었습니다. 이런! 나는 하루 종일 앉아 있었지만 여전히 결과가 없었다. 제발 여기에서 나를 도와주세요. 간단히 말해, 제 요구 사항은 제 그림 이미지의 일부를 지울 수있는 지우개와 같습니다. 당신의 도움을 주셔서 감사합니다!!CoreGraphics 프레임 워크를 사용하여 지우기 또는 투명한 획과 관련된 문제

답변

-1

일반적으로 CGContext은 첨가제 전용 캔버스입니다. 즉, 더 많은 페인트를 추가 할 수 있으며 기존 페인트를 제거하지 않습니다. 캔버스가 처음부터 흰색 이었으면 흰색으로 페인트 칠하여 가짜로 만들고 작업을 지울 수 있습니다.

간단한 해결책은 지우기 비트 맵의 ​​영역을 지울 때 수동으로 지우는 것입니다. CGContextClearRect 있습니다 :

복잡한 솔루션은 사용자가 입력하는 모든 그림 작업을 저장하고

참고 (이 또한 간단한 실행 취소 모드를 추가하는 것)을 삭제 연산의 결과로 변형하는 것입니다 함수가 있지만 일반적으로 비트 맵 컨텍스트에서 예상대로 작동합니다.

+0

CGContextSetBlendMode를 시도해 보았습니다. 방향을 바꾸고 있습니다. 그걸 호출 할 수 없으므로 해당 버퍼에있는 드로잉 객체를 유지하기 위해 NSMutableArray를 사용하여 that.removeAllObjects가 호출되었습니다. removeAllObjects message.My 응용 프로그램은 세 개의 탭 막대 항목이 있습니다. 하나는 도면 이미지를 저장하고 두 번째는 이미지를 지우고 세 번째는 방금 게시 한 도면 이미지 (MSPaint의 지우개와 같은 것)의 일부를 지우거나 지우는 것입니다. 여기 내 쿼리로. CoreGraphics/2D 물리학이 아직 좋지 않은만큼 도와주세요. – Manab

+0

가짜 및 지우기에 대한 첫 번째 해결책은 시도 할 수 있습니다. 솔직히 여기에 CGContextClearRect에 대한 사전 지식이 없으므로 더 많은 것을 알아야합니다. – Manab

+0

최선의 방법은'CGBitmapContextCreate'를 사용하여 자신의 버퍼를 제공하는 것입니다. 그런 다음 자신의 지우기 코드를 사용하여 직접 수정할 수 있습니다 – rpetrich

5

그냥 CGContextSetBlendMode(context, kCGBlendModeClear)

이 호출 그리기 작업은 비트 맵을 삭제하는 대신 색으로 그리기 될 수있는 방식으로 색상 혼합 모드를 변경을한다.

는 정상 렌더링으로 전환 매우 도움이 될 수있는 다른 블렌딩 모드를 사용하여 CGContextSetBlendMode(context, kCGBlendModeNormal)

수행합니다.

관련 문제