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