실례 합니다만, CGContext
에 대한 지식은 상당히 제한되어 있습니다.CGContext (CGContextSetFillColorWithColor)에서 채우기 색상을 설정할 수 없습니다.
허용 된 답변 HERE의 코드를 사용하여 UIView
에 별을 그립니다. 내가 성취하고자하는 것은 별을 2 가지 색상으로 표시하는 것입니다 (등급보기와 같음). 문제는 CGContextSetFillColorWithColor()
에 2 가지 색상을 사용할 수 없다는 것입니다.
관련 코드 :
if (i < 3) {
NSLog(@"__BLACK__");
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
} else {
NSLog(@"__RED__");
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
}
전체 코드 :
__BLACK__
__BLACK__
__BLACK__
__RED__
__RED__
그러나, 채우기 색상이되어 있지 않은 것 같습니다 : 컴파일 및 실행에
- (void) drawRect:(CGRect)rect {
int aSize = 20;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, aSize);
CGFloat xCenter = 15.0;
CGFloat yCenter = 12.5;
float w = 25.0;
double r = w/2.0;
float flip = -1.0;
for (NSUInteger i = 0; i < 5; i++) {
if (i < 3) {
NSLog(@"__BLACK__");
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
} else {
NSLog(@"__RED__");
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
}
double theta = 2.0 * M_PI * (2.0/5.0); // 144 degrees
CGContextMoveToPoint(context, xCenter, r * flip + yCenter);
for (NSUInteger k = 1; k < 5; k++) {
float x = r * sin(k * theta);
float y = r * cos(k * theta);
CGContextAddLineToPoint(context, x + xCenter, y * flip + yCenter);
}
xCenter += 37.5;
}
CGContextClosePath(context);
CGContextFillPath(context);
}
내가 로그를 얻을 결과는 다음과 같습니다.
내가 여기서 잘못하고있는 것을 이해하지 못합니다.
외부 'for' 루프는 5 세트의 별을 만들고, 이전 세트를 덮는 별 세트를 만듭니다 (즉, 1 개의 검은 별, 첫 번째 별이 위로 검은 색 별 2 개 그리고 검은 색 3 개 2 개의 검은 별을 덮고있는 별, 그리고 3 개의 검은 별을 덮고있는 4 개의 빨간 별 등). '(NSUInteger i = 0; i <5; i ++) {'를'(NSUInteger i = 0; i <2; i ++) {'로 바꾸면 검정색 별이 보일 것입니다. – bobnoble
@bobnoble, 당신은 옳았습니다. * ** for ** 문을 복제하고 표시된 코드 뒤에 원하는 색상과 반복 횟수를 추가했습니다. 그것은 효과가 있었다. 이 질문을 답으로 게시해야하며 동의 할 것입니다. – n00bProgrammer