2012-01-24 11 views
6

के पृष्ठभूमि रंग को बदलना मैं वास्तव में CGContexts से निपटने के लिए नया हूं और मैं बस एक साधारण टच पेंट & स्केच ट्यूटोरियल (http://blog.effectiveui.com) का पालन करके चीजों के चारों ओर अपने सिर को पाने की कोशिश कर रहा हूं। /? पी = 8105)एक CGContext

हालांकि मैंने अपने सीजीकॉन्टेक्स्ट के पृष्ठभूमि रंग को बदलने के लिए एक ईंट की दीवार मारा है।

मैं इस तरह conext की शुरुआत कर रहा हूँ:

- (BOOL) initContext:(CGSize)size { 
    int bitmapBytesPerRow; 
    bitmapBytesPerRow = (size.width * 4); 
    cacheContext = CGBitmapContextCreate (nil, size.width, size.height, 8, bitmapBytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipLast); 
    CGContextSetRGBFillColor(cacheContext, 1, 1, 1, 1); 
    return YES; 
} 

और बदलते स्ट्रोक रंग और चौड़ाई इस तरह:

UIColor *color = [UIColor whiteColor]; 
CGContextSetStrokeColorWithColor(cacheContext, [color CGColor]); 
CGContextSetLineCap(cacheContext, kCGLineCapRound); 
CGContextSetLineWidth(cacheContext, 4); 

लेकिन जब मैं काला से पृष्ठभूमि का रंग बदलने की कोशिश (या तो में CGContextSetRGBFillColor(cacheContext, 1, 1, 1, 1); का उपयोग करके init या ड्राइंग/स्ट्रोक सेट-अप भागों में) कोई प्रभाव नहीं पड़ता है।

क्या कोई मुझे कॉल करने के लिए बेहतर या सही जगह की सही दिशा में इंगित करने में सक्षम है, या सही कॉल का उपयोग करने के लिए? आपके समय के लिए बहुत धन्यवाद!

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/2571550/how-i-set-the-background-color-in-uiview-using-cgcontext – Saphrosit

उत्तर

22

आप केवल रंग सेट नहीं कर सकते हैं और संदर्भ को नए रंग से भरने की उम्मीद कर सकते हैं। आपको संदर्भ में रंग ड्रा की आवश्यकता है। init विधि में, भरण रंग सेट करने के बाद, जैसे

CGContextFillRect(cacheContext, (CGRect){CGPointZero, size}); 

एक संबंधित नोट पर, संदर्भ कुछ का उपयोग कर डिफ़ॉल्ट रूप से एक काले रंग की जरूरत नहीं है की कोशिश करो। उनके पास एक पारदर्शी रंग है। अब, यदि आपके संदर्भ में अल्फा चैनल नहीं है, तो यह काला हो जाएगा, लेकिन यदि आपके संदर्भ में अल्फा चैनल है और आप काला देख रहे हैं, तो ऐसा इसलिए है क्योंकि आप कुछ काले रंग के शीर्ष पर आउटपुट प्रस्तुत कर रहे हैं (या, वैकल्पिक रूप से, आप पारदर्शी छवि को उस परत में डाल रहे हैं जिसमें opaque ध्वज सेट सही है और CoreAnimation इसे काला के शीर्ष पर खींचने के समाप्त होता है)।

+0

यह पूरी तरह से काम करता है। उत्तर और स्पष्ट स्पष्टीकरण के लिए बहुत बहुत धन्यवाद! – DaveDee

संबंधित मुद्दे