2010-01-19 10 views
5

मैं इस कोड के साथ एक अच्छा छाया के साथ एक मंडली बनानेiPhone स्पष्ट CGContext

 UIGraphics.PushContext (ctx); 
     SizeF shadowSize = new SizeF (0f, -3f); 
     ctx.SetRGBFillColor (194f/255f, 212f/255f, 238f/255f, 1f); 
     ctx.SetAllowsAntialiasing (true); 
     ctx.SetShadowWithColor (shadowSize, 20, new CGColor (0.9f, 0.7f)); 
     RectangleF area = new RectangleF (35f, 15f, 210f, 210f); 
     ctx.FillEllipseInRect (area); 
     UIGraphics.PopContext(); 

तो मैं यह एक में जोड़ना चाहते हैं (मैं iPhone के लिए MonoTouch.net उपयोग करते हैं, ऑब्जेक्टिव-सी जवाब निश्चित रूप से ठीक कर रहे हैं) चाप और रेखाएं। जब मैं करता हूं, रंग और छाया आदि आसपास रहना प्रतीत होता है? मेरा UIView ड्राइंग करते समय मैं 'ताज़ा कैसे शुरू करूं? (यह सब एक ही UIView में है; मैं छवि का निर्माण कर रहा हूं)

उत्तर

13

यदि आप खींचे गए सभी चीज़ों को साफ़ करना चाहते हैं तो आपके पास खाली कैनवास है, कुछ भी चित्रण करने से पहले CGContextClearRect आज़माएं।

लेकिन मुझे लगता है कि आप का मतलब है कि आप छाया चाहते हैं, रंग भरें, इत्यादि केवल उस अंडाकार पर लागू होते हैं, न कि बाद में जो चीजें आप आकर्षित करते हैं। ऐसा करने के लिए, आप एक ही राज्य-सेटिंग विधियों को फिर से कॉल करना चाहते हैं, लेकिन विभिन्न तर्कों के साथ। उदाहरण के लिए, CGContextSetShadowWithColor एक छाया रंग की अपेक्षा करता है। लेकिन अगर आप उस तर्क के लिए NULL पास करते हैं, तो यह छायांकन को अक्षम कर देगा।

CGContextSetShadow documentation भी देखें, जिसमें छायांकन को अक्षम करने के सभी तरीकों के बारे में एक नोट है। आपके लिए सबसे अच्छा उठाओ।

मुझे लगता है कि आपकी मुख्य समस्या यह है कि आप ऐप्पल के उत्कृष्ट दस्तावेज़ीकरण का लाभ नहीं उठा रहे हैं। मैं इकट्ठा करता हूं कि MonoTouch.net अनिवार्य रूप से उद्देश्यों-सी एपीआई को समान या समान प्रतीक नामों के साथ .NET मॉड्यूल में मानचित्र करता है। तो एक त्वरित Google खोज के साथ, आपको आईफोन ओएस संदर्भ पुस्तकालय में संबंधित दस्तावेज ढूंढने में सक्षम होना चाहिए।

+0

चक्र मैं सिर्फ आकर्षित किया साफ करता है कि हालांकि –

+0

आह मैंने गलत समझा। मेरा जवाब संपादित करना –

1

इससे पहले कि हम ड्राइंग शुरू करते हैं, राज्य को बचाने:

CGContextSaveGState(ctx); 

तो हम पूरा कर लें के बाद, क्या यह शुरुआत में था करने के लिए राज्य लौट:

CGContextRestoreGState(ctx);