2012-02-29 31 views
7

Tôi đang thực hiện một số bản vẽ bằng CGContext. Tôi hiện đang che bản vẽ bằng cách sử dụng tệp png như sau:Masking CGContext với CGPathRef?

UIImage * myImage = [UIImage imageNamed:@"frame.png"]; 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextClipToMask(context, self.view.bounds, myImage.CGImage); 

Điều này làm việc tốt, nhưng bây giờ tôi muốn sử dụng CGPathRef hiện có làm mặt nạ của mình. Tôi có nên xem xét việc chuyển đổi CGPathRef thành UIImage và mặt nạ như trên không? Nếu vậy tôi sẽ chuyển đổi như thế nào? -OR- Có cách nào tốt hơn để tiếp cận vấn đề này không?

Trả lời

10
CGContextAddPath(context, yourPath); 
CGContextClip(context); 
+1

Điều này có tác dụng tốt cho rects & ellipse. Nhưng không làm việc cho tôi nếu đường dẫn được tạo ra bởi addArcWithCenter: radius: ... Và khi tôi chỉ cần một dòng pixel để giữ lại. –

+0

Chúng ta nên làm gì nếu chúng ta không muốn nó bị cắt bớt? Ví dụ: nếu chúng ta muốn che dấu một đường dẫn tùy chỉnh trên một hình ảnh mà không cần cắt nó vào các đường viền của đường dẫn? @cxa –