2012-07-14 4 views
10

코어 그래픽을 통해 2 개의 선형 그래디언트를 그린 다음 세 번째 흑백 선형 그래디언트로 마스킹하여 4 점 그라디언트를 만들 계획입니다.iOS에서 4 점 기울기

코어 그래픽 또는 기타를 사용하여 4 점 그라디언트를 그릴 수있는 효율적인 방법이 있습니까? 당신이 CGBlendMode를 사용할 때

enter image description here

답변

4

당신은 마스크 그라데이션을 절약 할 수 있습니다. 정확한 색상을 제어하는 ​​것이 더 어렵습니다. 그러나 이것이 당신에게 중요하지 않다면, 코드의 측면에서 보면 좀 더 효율적일 수 있고, 아마도 성능면에서도 좀 더 효율적일 수 있습니다.

Circles

방사형에게 투명 그라데이션 적용 :

을 여기

는 어떤 임의의 색상과 CGBlendModeExclusion (CGBlendModeDifference 당신에게 비슷한 효과를 준다)

- (void) drawRect:(CGRect)rect 
{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSetBlendMode(ctx, kCGBlendModeExclusion); 
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); 

    CGFloat col1[8] = { 
     1.0, 0.0, 0.0, 1.0, 
     0.0, 0.0, 1.0, 1.0 
    }; 
    CGGradientRef grad1 = CGGradientCreateWithColorComponents (space, col1, NULL, 2); 
    CGContextDrawLinearGradient(ctx, grad1, CGPointMake(0, 0), CGPointMake(0, 320), 0); 


    CGFloat col2[8] = { 
     1.0, 0.5, 0.0, 1.0, 
     0.0, 1.0, 0.0, 1.0 
    }; 
    CGGradientRef grad2 = CGGradientCreateWithColorComponents (space, col2, NULL, 2); 
    CGContextDrawLinearGradient(ctx, grad2, CGPointMake(0, 0), CGPointMake(320, 0), 0); 

    CGGradientRelease(grad1); 
    CGGradientRelease(grad2); 
    CGColorSpaceRelease(space); 
} 
+0

이것은 좋은 해결책 인 것 같습니다. – Mrwolfy

+0

굉장히 좋았어, 잘 했어! –

9

그리기 네 개의 원 예입니다 Gradient

,

결과 :

Result

참고 :

  • 그레이 라인 비트 맵의 ​​크기를 나타낸다.
  • 원의 직경은 비트 맵 직경의 두 배입니다.
  • 각 원은 비트 맵 모퉁이 중 하나에 가운데에 배치됩니다.
  • 효과적으로 가운데 부분 만 그립니다.
  • 나머지 부분은 비트 맵 외부에 있습니다.
+0

영리하다. 고마워. – Mrwolfy