2011-03-09 15 views
5

मैं एक चक्र आकृति के एक UIBezierpath मिला के साथ एक UIBezierPath भरें:एक UIImage

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:100]; 

लेकिन तब मैं एक UIImage (शो केवल छवि है जो चक्र के अंदर है के एक हिस्से) के साथ चक्र भरना चाहते हैं

बेस्ट सादर क्रिस्टियन

संपादित करें:

उत्कृष्ट जवाब के लिए डैनियल और डेव के लिए धन्यवाद: डी मुझे मुसीबत का एक बहुत बचाया ; D

समाधान:

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextAddPath(ctx, path.CGPath); 
CGContextClip(ctx); 

और:

path.addClip; 

दोनों पूरी तरह से काम करता है, लेकिन मैं पिछले विधि (डेव द्वारा) का उपयोग कर, क्योंकि यह कम कोड की आवश्यकता समाप्त हो गया।

+0

शायद आप एक मुखौटा छवि चाहते हैं जो बेजियर पथ के बिना किया जाना चाहिए? – Eimantas

उत्तर

9

अद्यतन: जैसे डेव डेलोंग बताते हैं, कोर ग्राफिक्स फ़ंक्शंस का उपयोग करने की कोई आवश्यकता नहीं है। यह चाल चलाना चाहिए:

[path addClip]; 
[image drawAtPoint:CGPointZero]; 
+2

+1, हालांकि आपको ऐसा करने के लिए कोरग्राफिक्स में जाने की आवश्यकता नहीं है। आप ऐसा करने के लिए '- [UIImage draw ....]' और '- [UIBezierPath addClip] 'का उपयोग कर सकते हैं। –

+0

गुड कॉल डेव - मैंने 'एडक्लिप' विधि को नहीं देखा था। UIKit कार्यान्वयन दिखाते हुए उत्तर अपडेट किया गया। –