2014-01-18 2 views
1

iOS 7. CGContextSetRGBStrokeColor 값이 다른 경우 두 원이 모두 녹색 인 이유는 무엇입니까? 마지막 색깔이 두 경로로 설정되어있는 것을 볼 수 있습니다 ... 왜 그런가요? 어떻게 각 경로를 다르게 색칠합니까?CGPathAddEllipseInRect 항상 마지막 색

- (void)drawRect:(CGRect)rect{ 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGMutablePathRef centerCirlce = CGPathCreateMutable(); 

//circle 1 
CGContextBeginPath(ctx); 
CGContextSetRGBStrokeColor(ctx, 1, 0.56f, 0.19f, 1); 
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); 
CGPathAddEllipseInRect(centerCirlce, NULL,CGRectMake(100, 100, 10, 10)); 
CGContextAddPath(ctx, centerCirlce); 
CGContextClosePath(ctx); 
CGContextStrokePath(ctx); 

//circle 1 
CGContextBeginPath(ctx); 
CGContextSetRGBStrokeColor(ctx, 0.36f, 0.74f, 0.32f, 1); 
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); 
CGPathAddEllipseInRect(centerCirlce, NULL,CGRectMake(200, 200, 10, 10)); 
CGContextAddPath(ctx, centerCirlce); 
CGContextClosePath(ctx); 
CGContextStrokePath(ctx); 
} 
+0

죄송합니다. 해당 코드는 읽기가 어렵습니다. 서로 다른 색상에 관한 질문과 관련이없는 모든 것을 제거하도록 코드를 단순화 할 수 있습니까? 내가 볼 수있는 유일한 점은 색상이 하드 코딩되어 있다는 것입니다. 다른 색상 위에 한 가지를 그리는 것이 아니라고 확신합니까? –

+0

간체, 테스트 됨. 두 개의 녹색 동그라미입니다. 그러나 녹색은 마지막 서클의 색상입니다. 왜 둘 다 같은 색깔을 가지고 있습니까? –

답변

1

코드를 단순하게 해줘서 고맙습니다. 이제 문제가 무엇인지 알 수 있습니다.

첫 번째 원을 그릴 때 새 경로를 만들고 해당 경로에 타원을 추가합니다. 그런 다음 색상으로 컨텍스트를 구성하고 컨텍스트에 경로를 추가하고 컨텍스트에서이를 사용하는 컨텍스트의 경로를 획에 추가하십시오.

이 시점에서 원을 그렸습니다. 컨텍스트의 상태는 이전 색이지만 경로는 없습니다. 의 경우, 중심 원 경로에 이전 타원이 계속 표시됩니다.

그런 다음 가운데 원 경로 (여기에는 타원이 모두 포함되어 있음)에 새 타원을 추가하여 두 번째 원을 그립니다. 그런 다음 이전과 마찬가지로 컨텍스트에 새 색상을 구성하고 가운데 원 경로 (둘 다 타원 포함) 및 컨텍스트 경로 획을 추가합니다 (즉, 이전 원과 새 원 모두 새 색상으로 칠해지며, 오래된 색의 위에).

+0

하나의 경로 = 하나의 색상. 많은 경로 = 많은 색상! I. R. Baboon ... :) 감사의 말씀을 전합니다. 특히 솔루션을 직접 찾을 수있는 단서를 제공해 주셔서 감사합니다. –

관련 문제