2012-07-04 8 views
4

내 앱에는 두 개의보기가 하나씩 있습니다. 나는 아래 그림에서 캡쳐 된 이미지를 가지고 있고 위의 그림에서 나는 이미지를 배치했다. 위의 이미지에서 사용자가 이미지를 지울 수있는 옵션을 제공하고 있습니다.ios - 고무처럼 UIImage를 지울 수 없습니다

모든 것이 잘 작동합니다. 이미지를 지우려고하면 부러진 것 같습니다. 이미지가 부드럽게 삭제되지 않습니다. 내가 지울 때 그것은 아래 보이는 것과 같다. Here I get The erased Image

내가 enter image description here

이 작업을 수행하는 방법, pls는 저에게

다음

도움이 따를이 원하는 것은 내 코드입니다 :

UIGraphicsBeginImageContext(frontImage.frame.size); 
     [frontImage.image drawInRect:CGRectMake(0, 0, frontImage.frame.size.width, frontImage.frame.size.height)]; 
     CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
     CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 10); 
     CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1, 0, 0, 10); 
     CGContextBeginPath(UIGraphicsGetCurrentContext()); 
     CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
     CGContextClearRect (UIGraphicsGetCurrentContext(), CGRectMake(lastPoint.x, lastPoint.y, 50, 50)); 
     CGContextStrokePath(UIGraphicsGetCurrentContext()); 
     frontImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
+0

사용 접합 단부의 라인 : CGContextSetLineCap (UIGraphicsGetCurrentContext() kCGLineCapRound); –

+0

yor 답장을 보내 주셔서 감사합니다, 여기 지금도 나는이 코드 줄을 사용했습니다. 위의 코드는 내가 구현 한 코드를 추가했습니다. – dineshprasanna

+0

감사합니다. 그러나 ccsprite를 사용하여 cocos2d의 게임에서 이미지를 지울 수 있습니다. ... 도와주세요 –

답변

1

문제는 당신이있어 것입니다 사각형 브러시를 사용하면 사용자가 그린 선의 한 지점에서 사각형 만 지 웁니다. 또한 스트로크 색상은 사용자가하려는 것을 완전히 잘못합니다.

선을 선명한 색으로 설정하고 이전 점과 현재 점 사이에 선을 그리는 것처럼 보입니다. 이 경우 startPt.x/Y에서

CGContextRef currCtx = UIGraphicsGetCurrentContext(); 
CGContextSetRGBStrokeColor (currCtx, 0, 0, 0, 0); 
CGContextMoveToPoint (currCtx, startPt.x, startPt.y); 
CGContextLineToPoint (currCtx, endPt.x, endPt.y); 

이전 터치의 위치, 그리고 endPt.x/y는 현재 터치입니다 : 당신이 그렇게 원한다면, 당신은이 작업을 수행해야합니다.

게시 한 그림처럼 선을 멋지게 찍으려면 실제로 앤티 앨리어스 텍스처를 사용하여 선상의 모든 점에서 크기를 변경해야합니다. 그러나 위의 것은 당신에게 꽤 좋은 것처럼 보일만한 무언가를 얻어야합니다.

+0

고마워요, 아직도 ia가 똑같은 문제가 있어요 – dineshprasanna

+0

이 줄에서 그들은 오류 CGContextLineToPoint를 통해 – dineshprasanna

+0

나는 당신의 마지막 코멘트를 이해하지 못하지만'CGContextClearRect()'에 대한 호출을 제거 했습니까? 그것이 당신의 불굴의 원인입니다. 또한 위의 Shehzad Bilal이 언급 한 바와 같이 라인 캡을 설정하십시오. – user1118321

0
UIGraphicsBeginImageContext(imageView1.frame.size); 
[imageView1.image drawInRect:CGRectMake(0, 0,imageView1.frame.size.width, imageView1.frame.size.height)]; 
CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeClear); 
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 25.0); 

CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor clearColor] CGColor]); 
CGContextBeginPath(UIGraphicsGetCurrentContext()); 
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), point.x, point.y); 
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), point.x, point.y); 
CGContextStrokePath(UIGraphicsGetCurrentContext()) ; 

imageView1.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
관련 문제