मैं आगे जाना है और मान लीजिए आपका CGContext अभी भी है कि विरोधी aliasing चालू, लेकिन यदि नहीं, तो वह स्पष्ट पहले की कोशिश करने लगता है करने के लिए जा रहा हूँ:
यह रेखा खींचने कोड है , जैसा कि @ डेविड की टिप्पणी से पता चलता है: CGContextSetShouldAntialias
ब्याज का कार्य है।
मान लीजिए कि यह समस्या नहीं है, और रेखा संदर्भ द्वारा एंटी-एलाइज्ड हो रही है, लेकिन आप अभी भी कुछ नरम चाहते हैं। मैं ऐसा करने के कुछ तरीकों के बारे में सोच सकता हूं जो उम्मीद करनी चाहिए कि 5 बार स्ट्रोकिंग से तेज होना चाहिए।
सबसे पहले, आप CGContextReplacePathWithStrokedPath
का उपयोग करके स्ट्रोक पथ (यानी एक पथ जो वर्तमान पथ के स्ट्रोक की रूपरेखा का वर्णन करता है) प्राप्त करने का प्रयास कर सकते हैं, फिर आप इस पथ को ढाल के साथ भर सकते हैं (या जो भी अन्य भरने वाली तकनीक वांछित परिणाम देती है ।) यह सीधे लाइनों के लिए अच्छी तरह से काम करेंगे, लेकिन घुमावदार रास्तों के लिए सरल नहीं होगा (के बाद से ढाल stroked पथ के क्षेत्र भरने है, और लीनियर या रेडियल हो जाएगा।)
एक और शायद कम स्पष्ट विकल्प , इस उद्देश्य के लिए सीजी के छाया चित्र का दुरुपयोग करना हो सकता है। समारोह आप को देखने के लिए चाहते हैं: CGContextSetShadowWithColor
यहाँ विधि है:
- सहेजें GState:
CGContextSaveGState
- , मूल पथ
- कॉपी पथ के सीमांकन बॉक्स जाओ 2.0 से ही इसे दूर का अनुवाद *
CGPathCreateCopyByTransformingPath
का उपयोग कर bbox.width (ध्यान दें: केवल एक्स दिशा का उपयोग, इस तरह आप संदर्भ में flips बारे में चिंता करने की जरूरत नहीं है)
- मूल bbox का उपयोग कर
CGContextClipToRect
- पर एक छाया सेट करने के लिए संदर्भ क्लिप संदर्भ वाईआई वें
CGContextSetShadowWithColor
:
- कुछ न्यूनतम धुंध (0.5 से शुरू करें और वहां से जाएं। धुंध पैरामीटर गैर-रैखिक है, और आईएमई यह एक अनुमान और जांच ऑपरेशन है)
- बेस ऑफ स्पेस के लिए -2.0 * बॉक्स चौड़ाई और 0.0 ऊंचाई के बराबर एक ऑफसेट। (ध्यान दें: ये ऑफसेट बेस स्पेस में हैं। यह पता लगाने में गड़बड़ी होगी, लेकिन यह मानते हुए कि आप अपना खुद का स्केल ट्रांसफॉर्म नहीं जोड़ रहे हैं, स्केल फैक्टर या तो 1.0 या 2.0 होगा, इसलिए व्यावहारिक रूप से, आप एक सेट करेंगे ऑफसेट.विड्थ या तो -2.0 * bbox.width या -4.0 * bbox.width)
- आपके चयन का एक रंग।
- अनुवादित दूर पथ को स्ट्रोक करें।
- GState
CGContextRestoreGState
पॉप इस के साथ "सिर्फ" छाया है, जो आपको उम्मीद है कि परिणाम आप चाहते प्राप्त करने के लिए परिवर्तित कर सकते हैं आप छोड़ देना चाहिए।
सभी ने कहा कि, सीजी का छाया चित्र प्रदर्शन, आईएमई, पूरी तरह से भयानक से कम है, और पूरी तरह से निर्धारिती से कम है। मैं उम्मीद करता हूं कि यह 5 अलग-अलग स्ट्रोक के साथ पथ को 5 बार पथभ्रष्ट करने से तेज होगा, लेकिन भारी नहीं।
यह इस बात को कम कर देगा कि इस प्रभाव को आपके लिए कितना मूल्यवान है।
क्या आपने CGContextSetShouldAntialias फ़ंक्शन का प्रयास किया है? – Davyd
मुझे अतीत में क्वाड वक्र या वक्र का उपयोग 2 नियंत्रण बिंदुओं के साथ समान समस्याएं थीं। यदि आप मुझे आकर्षित करना चाहते हैं या कम से कम पंख की कुछ और जानकारी खींचने की कोशिश कर रहे हैं, तो मैं शायद आपको मदद कर सकता हूं। – GianPac