2016-12-20 9 views
0

잘 작동하는 선을 그리기 위해 다음 코드를 사용했지만 터치 이벤트로 문맥 내에서 그 선을 이동하는 방법은 무엇입니까?Objective-C에서 touch 이벤트로 CGContext로 그린 선을 이동하는 방법은 무엇입니까?

- (void) drawLineFrom:(CGPoint)from to:(CGPoint)to width:(CGFloat)width 
    { 
     UIGraphicsBeginImageContext(self.frame.size); 
     CGContextRef ctx = UIGraphicsGetCurrentContext(); 
     CGContextScaleCTM(ctx, 1.0f, -1.0f); 
     CGContextTranslateCTM(ctx, 0.0f, -self.frame.size.height); 
     if (drawImage != nil) { 
      CGRect rect = CGRectMake(0.0f, 0.0f, self.frame.size.width, self.frame.size.height); 
      CGContextDrawImage(ctx, rect, drawImage.CGImage); 
     } 
     CGContextSetLineCap(ctx, kCGLineCapRound); 
     CGContextSetLineWidth(ctx, width); 
     CGContextSetStrokeColorWithColor(ctx, self.drawColor.CGColor); 
     CGContextMoveToPoint(ctx, from.x, from.y); 
     CGContextAddLineToPoint(ctx, to.x, to.y); 
     CGContextStrokePath(ctx); 
     CGContextFlush(ctx); 
     drawImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     drawLayer.contents = (id)drawImage.CGImage; 
    } 

CGContext에서 그려지는 선의 참조를 얻는 방법은 무엇입니까? 미리 감사드립니다.

답변

2

UIGraphicsBeginImageContext()은 이미지 컨텍스트 (픽셀 그리드)를 시작합니다.

drawImage = UIGraphicsGetImageFromCurrentImageContext();drawLayer.contents = (id)drawImage.CGImage;은 레이어의 내용을 그 그리드 픽셀의 캡처 된 형태로 설정합니다.

중간의 UIGraphicsEndImageContext()은 사용자가 가지고 있던 컨텍스트를 끝냅니다. 컨텍스트가 더 이상 존재하지 않습니다.

  • 당신이 그려진 된 개별 픽셀보다 더 높은 수준의 통찰력을 가지고 거기에 그려진 무엇을 말할 수있는 이미지 컨텍스트를 요청하고 기대할 수 없다 : 그래서

    는 말 그대로 질문에 대답 ;
  • 더 이상 존재하지 않기 때문에 내가 그린 문맥을 물어볼 수 없습니다.

정상적으로해야 할 일은 라인에 대해 원하는 것을 설명하는 속성 묶음이있는 UIView을 만드는 것입니다. 구현 -drawRect: 그리고 거기에 속성을 기반으로 선을 그립니다. 선을 업데이트하려면 속성을 업데이트하십시오. 속성 설정자가 setNeedsDisplay을 호출했는지 확인하십시오.

대화식 인 항목은 UIView의 하위 클래스 여야합니다. 시스템이 요청하면 뷰가 그려집니다. 정상적인 패턴은 당기고 당기지 않습니다.