2013-12-20 49 views
0

我已經創建了包含兩個同心圓的UIView子類。我用一些顏色填補他們之間的差距。我的代碼看起來像以下:如何用兩種不同的顏色填補同心圓之間的空隙?

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextAddEllipseInRect(ctx, rect); 
CGContextAddEllipseInRect(ctx, CGRectMake(rect.origin.x + self.thick, 
              rect.origin.y + self.thick, 
              rect.size.width - 2 * self.thick, 
              rect.size.height - 2 * self.thick)); 
[self.fillColor set]; // Fill color is color value 
CGContextEOFillPath(ctx); 

這並填補了國內空白用一種顏色,我在想,如果我可以填寫使用兩種不同顏色的差距?例如,一半的間隙用白色填充,另一半用灰色填充。

回答

0

快速的方法是填充圓圈兩次,第二次剪切區域。

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextAddEllipseInRect(ctx, rect); 
CGContextAddEllipseInRect(ctx, CGRectMake(rect.origin.x + self.thick, 
              rect.origin.y + self.thick, 
              rect.size.width - 2 * self.thick, 
              rect.size.height - 2 * self.thick)); 
[self.fillColor set]; // Fill color is color value 
CGContextEOFillPath(ctx); 

CGContextAddRect(ctx,tophalfRect); 
CGContextClip(); 
CGContextAddEllipseInRect(ctx, rect); 
CGContextAddEllipseInRect(ctx, CGRectMake(rect.origin.x + self.thick, 
              rect.origin.y + self.thick, 
              rect.size.width - 2 * self.thick, 
              rect.size.height - 2 * self.thick)); 
[self.fillColor2 set]; // Fill color is color value 
CGContextEOFillPath(ctx); 

如果您擔心性能問題,可以用較少的平局呼叫來完成此操作。

0
/*program for concentric circles with color fill*/ 
#include<stdio.h> 
#include<conio.h> 
#include<graphics.h> 
void main() 
{ 
clrscr(); 
int gd,gm; 
gd=DETECT; 
initgraph(&gd,&gm,"c:\\turboc3\\bgi"); 
int rad,i=1; 
for(rad=100;rad>=10;rad++) 
{ 
setcolor(i); 
circle(340,220,rad); 
setfillstyle(SOLID_FILL,i); 
floodfill(340,220,i); 
rad=rad-10; 
i++; 
} 

getch(); 
closegraph(); 
}