2013-10-14 4 views
8

मेरे पास CGPath (दो सर्कल वाले पॉली) CAShapeLayer पर किए गए हैं।CGPath से CGPath को ट्रिम/घटाएं?

क्या मैं इस तरह के पथों को ट्रिम/घटा सकता हूं?

enter image description here

+0

संक्षिप्त उत्तर: नहीं। लंबा उत्तर: आप इसे काफी कठिन बना सकते हैं। –

+0

धन्यवाद :) मैं इसे फॉलबैक के रूप में लेयर मास्क जोड़कर कर सकता हूं, लेकिन मैं रास्टरराइजेशन पास को दबा देना चाहता था, गणित पसंद करूंगा। ड्राइंग – Geri

+1

+1 धन्यवाद। यह डिजाइन प्रक्रिया के दौरान किया गया था, लेकिन इस सवाल के लिए एकदम सही फिट था। :) – Norbert

उत्तर

4

गणित कर के बजाय, परिणाम kCGBlendModeClear का उपयोग कर समय ड्राइंग पर प्राप्त किया जा सकता है।

// Create the poly. 
CGContextBeginPath(context); 
CGContextMoveToPoint  (context, a_.x, a_.y); 
CGContextAddLineToPoint (context, b_.x, b_.y); 
CGContextAddLineToPoint (context, c_.x, c_.y); 
CGContextAddLineToPoint (context, d_.x, d_.y); 
CGContextClosePath(context); 

// Draw with the desired color. 
CGContextSetFillColorWithColor(context, self.color.CGColor); 
CGContextFillPath(context); 

// Create a circle. 
CGContextBeginPath(context); 
CGContextAddEllipseInRect(context, (CGRect){ 
    b_.x - self.radius, 
    b_.y - self.radius, 
    self.radius * 2.0, 
    self.radius * 2.0 }); 
CGContextClosePath(context); 

// Draw with Clear (!) blend mode. 
CGContextSetBlendMode(context, kCGBlendModeClear); 
CGContextSetFillColorWithColor(context, self.color.CGColor); 
CGContextFillPath(context); 
संबंधित मुद्दे