2009-09-23 221 views
1

有誰知道如何在CALayer上繪製透明圓形,就像使用CGContextClearRect繪製透明矩形一樣?我的要求是我需要在圖片上繪製一個蒙版,在某些情況下,我需要刪除它,但CGContextClearRect只允許繪製一個矩形,我想知道是否有另一種方法來做同樣的事情並畫出一個不透明的圓圈。如何繪製像使用CGContextClearRect繪製透明矩形的透明圓形

問候, 安託

回答

1

最初繪製圓圈,然後再剪裁路徑,然後再次清除由CGContextClearRect的圓的邊界矩形。

+0

您能否提供一段示例代碼?我是Quartz 2d的新手。 – user177946 2009-09-24 07:51:29

+0

CGContextRef context = UIGraphicsGetCurrentContext(); CGRect cirleRect = CGRectMake(0,0,100,100); CGContextStrokeEllipseInRect(context,cirleRect); CGContextClip(context); CGContextClearRect(context,cirleRect); 這將創建一個直徑爲100像素的透明圓... – Shreekara 2009-09-28 17:58:51

3

Shreekara的評論略有偏差。使用AddArc而不是StrokeEllipse:

CGRect cirleRect = CGRectMake(0, 0, 100, 100); 
CGContextAddArc(context, 50, 50, 50, 0.0, 2*M_PI, 0); 
CGContextClip(context); 
CGContextClearRect(context,cirleRect); 
+0

這是一種魅力。 – tobyc 2010-06-01 06:44:31