2011-05-19 143 views
8

我想畫一個戒指。戒指應填充在一個外圈。我提到了一個文檔http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_paths/dq_paths.html#//apple_ref/doc/uid/TP30001066-CH211-TPXREF101。但仍然有問題得到結果。這是代碼。如何在iphone中繪製同心圓?

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextClearRect(ctx, rect); 
CGContextSetRGBFillColor(ctx, 0.0, 255.0, 1.0, 1.0);CGContextFillPath(ctx); 
CGContextStrokeEllipseInRect(ctx, CGRectMake(125, 125, 150, 150)); 
CGContextBeginPath(ctx); 
CGContextEOFillPath(ctx); 
CGContextFillEllipseInRect(ctx, CGRectMake(100, 100, 200, 200)); 
+3

...發生了什麼事? – 2011-05-19 15:42:32

+1

它完全填充了圓。 – 2011-05-20 08:47:07

+0

用可幫助您的運行示例檢查此答案:http://stackoverflow.com/a/27796085/1381708 – 2015-01-06 09:54:41

回答

13

你需要更多的東西是這樣的:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextAddEllipseInRect(ctx, rect); 
    CGContextAddEllipseInRect(ctx, 
       CGRectMake(
        rect.origin.x + 10, 
        rect.origin.y + 10, 
        rect.size.width - 20, 
        rect.size.height - 20)); 
    CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor blueColor] CGColor])); 
    CGContextEOFillPath(ctx); 
} 

這兩個橢圓添加到您的電流路徑(一個比另一個更小,但圍繞相同的點爲中心)。當填充路徑時,EOFillPath本質上會從外部橢圓中「減去」內部橢圓。要創建「同心圓」,如果這真的是你想要的,你可以簡單地重複這個 - 更小的 - 省略號。

+0

感謝您的解決方案。 'AddEclipse'方法適用於我。 – 2011-05-20 08:49:24