iOS'ta

2012-07-14 5 views
10

dört nokta gradyanı Çekirdek grafikleri kullanarak iki doğrusal degradeyi çizerek ve bunların arasında üçüncü bir siyah-beyaz doğrusal gradyan ile maskeleme yaparak, aşağıda gösterilen dört noktalı bir degrade oluşturmayı planlıyorum.iOS'ta

Çekirdek grafikler kullanarak dört noktalı bir degrade çizmek için daha verimli bir yol var mı, yoksa başka? Bir CGBlendMode kullandığınızda

enter image description here

cevap

4

Sen maske eğimi kaydedebilirsiniz. Tam renkleri kontrol etmek daha zor. Ancak bu sizin için önemli değilse, kod satırları ve performans açısından da biraz daha verimli olabilir.

Circles

radyal şeffaf degrade uygulama:

İşte

rastgele renkler ve CGBlendModeExclusion (CGBlendModeDifference size benzer bir etki verir)

- (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

Bu iyi bir çözüm gibi görünüyor! – Mrwolfy

+0

Müthiş bu tam olarak ihtiyacım olan şey, iyi iş! –

9

çizin dört çevreler ile bir örnek Gradient

Sonuç:

Result

Notlar:

  • gri çizgiler bitmap boyutunu temsil eder.
  • Dairelerin çapı, bitmap çapının iki katıdır.
  • Her daire, bitmap köşesinden birine ortalanır.
  • Etkin olarak sadece orta kısım çizilir.
  • Kalan kısımlar bitmap'in dışında.
+0

zeki, teşekkürler. – Mrwolfy