2012-10-01 29 views
9

Đang tạo trò chơi ghép hình cho iPhone.iphone UIbezierpath cắt xén hình ảnh bất thường

Ở đây tôi phải cắt hình ảnh giống như hình dưới đây

enter image description here

Sau khi googling tôi đến để biết con đường uibezier là tốt nhất cho cắt xén hình ảnh trong hình dạng bất thường.

Nhưng tôi không nhận được bất kỳ mã hoặc ý tưởng nào về cách cắt hình ảnh như trên.

+0

Hãy xem câu trả lời của tôi ở đây http://stackoverflow.com/questions/13153223/how-to-crop-the-image-using-uibezierpath/ 15353848 # 15353848 –

Trả lời

8

Sẽ mất rất nhiều thời gian dùng thử và lỗi, tôi đã thực hiện điều này nhanh chóng chỉ để cung cấp cho bạn ý tưởng về cách tạo hình dạng bằng Đường dẫn Bezier. Dưới đây là mã ví dụ để tạo hình vuông mà tôi đã nhanh chóng tạo ra

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]; 

Nếu tôi có nhiều thời gian hơn, tôi có thể tạo hình ảnh, nhưng thực hiện nhanh như không có quá nhiều thời gian. Nó không quá khó để sử dụng một khi bạn nhận được vòng đầu của bạn như thế nào các điểm được thực hiện. Nó sẽ đưa bạn rất nhiều thử nghiệm và lỗi để tạo ra hình dạng này, nhưng sử dụng mã tôi cung cấp làm cơ sở cho cách tạo hình bằng cách sử dụng đường dẫn Bezier. Bạn sẽ cần phải tạo ra nhiều điểm hơn để kết thúc với hình dạng bạn có trong tâm trí.

Tôi cũng sẽ khuyên bạn nên nhìn phát triển Táo hướng dẫn để tạo hình dạng bất thường

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

Trong cái nhìn đặc biệt tại "Thêm Curves Path của bạn" để tìm hiểu làm thế nào để tạo ra đường cong và thêm chúng vào hình ảnh của bạn . Bạn sẽ cần phải có để tạo ra ghép mảnh ghép hình bạn đang cố gắng để tạo ra

EDIT:

Hãy thử phương pháp này

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

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

Các phương pháp trên sẽ mất một con đường Bút chì và một ImageView và sau đó áp dụng đường dẫn bezier cho imageView cụ thể đó. Nó cũng sẽ cắt. Sẽ mất rất nhiều thử và sai, tôi sẽ tưởng tượng để có được hình dạng vừa phải, có thể khó khăn và bực bội tạo ra hình dạng phức tạp đôi khi.

dụ nhanh của việc áp dụng mã này

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]; 

Chỉ cần nhanh chóng thực hiện một hình vuông ra khỏi phần trên bên trái của hình ảnh. Ví dụ: nếu bạn có hình ảnh vuông, bạn có thể lặp qua chiều rộng và chiều cao của hình ảnh, cắt xén thành các hình vuông riêng biệt bằng cách sử dụng mã ở trên và trả lại riêng lẻ. Tạo mảnh ghép hình phức tạp hơn nhiều, nhưng hy vọng điều này sẽ giúp

+0

cảm ơn bạn rất nhiều vì đã trả lời và dành thời gian cho câu hỏi của tôi. Có ngay bây giờ là rõ ràng trong những điều trong đó con đường tôi nên đi du lịch và ở đây một câu hỏi của tôi là cắt xén hình ảnh. bạn có ý tưởng gì không? xén với đường cong vẽ bằng cách sử dụng đường dẫn uibezier này? – nik

+0

Và tôi chỉ muốn kết hợp mẫu này với uiimage và tôi chỉ muốn cắt hình ảnh với mẫu đó – nik

+1

Xem chỉnh sửa của tôi, tôi đã bao gồm một phương pháp mà bạn có thể sử dụng, nơi nó sẽ có đường dẫn bezier và imageView và thực hiện việc cắt cho bạn . Hy vọng rằng sẽ giúp – AdamM

Các vấn đề liên quan