2012-07-14 20 views
10

मैं कोर ग्राफिक्स के माध्यम से दो रैखिक ग्रेडियेंट ड्राइंग करके और एक तीसरे काले और सफेद रैखिक ढाल के साथ मास्किंग करके चार चित्र ढाल बनाने की योजना बना रहा हूं।आईओएस में चार बिंदु ढाल

क्या कोर ग्राफिक्स का उपयोग करके चार बिंदु ढाल बनाने के लिए एक और अधिक प्रभावी तरीका है?

enter image description here

उत्तर

4

जब आपके पास कोई CGBlendMode का उपयोग मुखौटा ढाल बचा सकता है। सटीक रंगों को नियंत्रित करना मुश्किल है। लेकिन यदि यह आपके लिए महत्वपूर्ण नहीं है, तो यह कोड की रेखाओं और शायद प्रदर्शन के संदर्भ में थोड़ा अधिक कुशल हो सकता है।

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