2012-10-01 2 views
9

iPhone 용 지그 소 퍼즐 게임을 만들고 있습니다.iphone UIbezierpath 불규칙한 이미지 자르기

여기 난 그냥 uibezier 경로가 불규칙 모양의 이미지를 자르기위한 최선의 하나입니다 알고 함께 제공되는 인터넷 검색 후 아래 그림

enter image description here

같은 이미지를자를 수 있습니다.

그러나 위와 같은 이미지 자르기 방법에 대한 코드 나 아이디어를 얻지 못했습니다.

+0

내 대답을보세요. http://stackoverflow.com/questions/13153223/how-to-crop-the-image-using-uibezierpath/ 15353848 # 15353848 –

답변

8

많은 시행 착오를 겪을 것입니다. 베 지어 패스를 사용하여 모양을 만드는 방법에 대한 아이디어를 빨리 얻었습니다. 아래는 내가, 내가 이미지를 만들 수 있습니다 더 많은 시간을했지만, 너무 많은 시간을 가지고 있지 않기 때문에 빨리 이런 짓을하면 내가 빨리

UIBezierPath *aPath = [UIBezierPath bezierPath]; 

    // Set the starting point of the shape. 
    [aPath moveToPoint:CGPointMake(50.0, 50.0)]; 
    // Draw the lines. 
    [aPath addLineToPoint:CGPointMake(100.0, 50.0)]; 
    [aPath addLineToPoint:CGPointMake(100.0, 100.0)]; 
    [aPath addLineToPoint:CGPointMake(50.0, 100.0)]; 
    [aPath closePath]; 

    CAShapeLayer *square = [CAShapeLayer layer]; 
    square.path = aPath.CGPath; 
    [self.view.layer addSublayer:square]; 

를 만든 사각형 모양을 만드는 예제 코드입니다. 포인트를 만드는 방법에 머리를 돌리면 사용하기가 너무 어렵지 않습니다. 이 도형을 만들 때 많은 시행 착오를 거치지 만, 베 지어 패스를 사용하여 도형을 만드는 방법의 기초로 제공된 코드를 사용하십시오. 당신은 당신이 염두에두고있는 모양으로 끝낼 더 많은 포인트를 만들어야합니다.

또한 곡선을 만드는 방법을 이해하고 이미지에 추가하는 불규칙한 모양은 "경로에 추가 곡선"에 특히 찾는

http://developer.apple.com/library/ios/#documentation/2ddrawing/conceptual/drawingprintingios/BezierPaths/BezierPaths.html

를 만드는 애플의 개발자 가이드에서 찾고 추천 . 당신은 지그 소 퍼즐 조각 모양을 만들기 위해 당신이 만들려고하는 것이 필요합니다

편집 :

보십시오이 방법

- (void) setClippingPath:(UIBezierPath *)clippingPath : (UIImageView *)imgView; 
{ 
    if (![[imgView layer] mask]) 
     [[imgView layer] setMask:[CAShapeLayer layer]]; 

    [(CAShapeLayer*) [[imgView layer] mask] setPath:[clippingPath CGPath]]; 
} 

베 지어 경로와 이미지 뷰를 취할 것입니다 위의 방법 그런 다음 특정 이미지 뷰에 베 지어 경로를 적용하십시오. 클리핑도 할 것입니다. 시행 착오를 많이 겪어 내 생각에 모양이 올바르다는 것을 상상할 수 있습니다. 때로는 복잡한 모양을 만드는 것이 어렵고 좌절 할 수 있습니다. 이 코드

UIBezierPath *aPath = [UIBezierPath bezierPath]; 
    // Set the starting point of the shape. 
    [aPath moveToPoint:CGPointMake(0.0, 0.0)]; 
    // Draw the lines. 
    [aPath addLineToPoint:CGPointMake(50.0, 0.0)]; 
    [aPath addLineToPoint:CGPointMake(50.0, 50.0)]; 
    [aPath addLineToPoint:CGPointMake(0.0, 50.0)]; 
    [aPath closePath]; 

    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bar.png"]]; 
    imgView.frame = CGRectMake(0, 0, 100, 100); 
    [self setClippingPath:aPath :imgView]; 
    [self.view addSubview:imgView]; 

을 적용

빠른 예는 그냥 빨리 이미지의 왼쪽 상단 부분에서 사각형을했다. 예를 들어 정사각형 이미지가있는 경우 이미지의 너비와 높이를 반복하고 위 코드를 사용하여 별도의 사각형으로 자르고 개별적으로 반환 할 수 있습니다. 지그 소 퍼즐 조각을 훨씬 더 복잡하게 만들지 만 이것이 도움이 되었기를 바랍니다.

+0

답장을 보내 주셔서 감사 드리며 제 질문에 시간을 보내고 있습니다. 네, 이제 여행해야하는 경로에서 분명합니다. 여기서 또 다른 질문은 이미지를 자르는 것입니다. 너는 그것에 대해 어떤 생각을 가지고 있니? 이 uibezier 경로를 사용하여 플로트 커브 자르기? – nik

+0

그리고이 패턴을 uiimage와 일치시키고 싶습니다. 그 패턴으로 이미지를 자르고 싶습니다. – nik

+1

제 편집을보세요. 베 지어 경로와 imageView를 사용하는 곳에서 사용할 수있는 방법을 포함하고 당신을 위해 클리핑을 수행합니다 . 희망은 도움이 – AdamM