2013-12-20 24 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(); 
}