2014-02-18 77 views
0

我正在使用繪製矩形中的以下代碼繪製一個簡單的實心圓。如何剪輯使用CGContextFillEllipseInRect與另一個圓創建的圓形

CGContextRef con = UIGraphicsGetCurrentContext(); 
CGContextAddEllipseInRect(con, CGRectMake(0,0,self.bounds.size.width,self.bounds.size.height)); 
CGContextSetFillColorWithColor(con, [UIColor blueColor].CGColor); 
CGContextFillPath(con); 

它正確繪製一個圓圈。現在我想用中間的另一個小圓圈夾住圓圈,這樣它就變成了一個空心圓圈,你可以看到主圓圈後面的任何東西。我怎樣才能做到這一點?

回答

0

我能,使用EO規則做。

CGContextRef con = UIGraphicsGetCurrentContext(); 
CGContextAddEllipseInRect(con, rect); 
CGContextAddEllipseInRect(con, CGRectInset(rect, 40, 40)); 
CGContextSetFillColorWithColor(con, [UIColor blueColor].CGColor); 
CGContextEOFillPath(con); 
+0

就像我說的,但你的答案不是那樣搞砸了 – peko

0

使用奇偶規則與CGContextEOClip()

CGSize size = rect.size; 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextTranslateCTM(context, 0, 0); 
CGContextSaveGState(context); 

CGContextAddPath(context, ([UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, size.width, size.height)].CGPath)); 
CGContextAddPath(context, ([UIBezierPath bezierPathWithOvalInRect:CGRectMake(size.width/4, size.height/4, size.width/2, size.height/2)].CGPath)); 
CGContextEOClip(context); //clip 
CGContextAddPath(context, [UIBezierPath bezierPathWithRect:rect].CGPath); 

CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor); 
CGContextFillPath(context); 

CGContextRestoreGState(context); 
相關問題