2012-10-01 24 views
9

आईफोन के लिए एक जिग्स पहेली गेम बना रहा हूं।आईफोन UIbezierpath अनियमित छवि फसल

यहाँ मैं सिर्फ नीचे दी गई छवि

enter image description here

Googling मुझे पता uibezier पथ अनियमित आकार में चित्र को काटने के लिए सबसे अच्छा एक है आया था के बाद की तरह चित्र काटने के लिए किया है।

लेकिन मुझे उपरोक्त की तरह छवि को फसल करने के लिए कोई कोड या विचार नहीं मिला।

+0

मेरा उत्तर यहां देखें http://stackoverflow.com/questions/13153223/how-to-crop-the-image-using-uibezierpath/ 15353848 # 15353848 –

उत्तर

8

इसमें बहुत परीक्षण और त्रुटि होगी, मैंने आपको यह समझने के लिए बस इतना ही बताया कि बेजियर पथ का उपयोग करके आकार कैसे बनाएं। नीचे एक वर्ग आकार है कि मैं जल्दी से

UIBezierPath *aPath = [UIBezierPath bezierPath]; 

    // Set the starting point of the shape. 
    [aPath moveToPoint:CGPointMake(50.0, 50.0)]; 
    // Draw the lines. 
    [aPath addLineToPoint:CGPointMake(100.0, 50.0)]; 
    [aPath addLineToPoint:CGPointMake(100.0, 100.0)]; 
    [aPath addLineToPoint:CGPointMake(50.0, 100.0)]; 
    [aPath closePath]; 

    CAShapeLayer *square = [CAShapeLayer layer]; 
    square.path = aPath.CGPath; 
    [self.view.layer addSublayer:square]; 

बनाया था, तो मैं और अधिक समय, मैं छवि बना सकते थे, लेकिन यह जल्दी से किया था के रूप में बहुत ज्यादा समय नहीं है बनाने के लिए उदाहरण कोड है। एक बार जब आप अपने सिर को गोल करते हैं तो अंक का उपयोग करने के बाद इसका उपयोग करना मुश्किल नहीं होता है। यह आपको इस आकार को बनाने के लिए बहुत परीक्षण और त्रुटि लेगा, लेकिन बेजियर पथ का उपयोग करके आकृतियों को बनाने के तरीके के आधार पर प्रदान किए गए कोड का उपयोग करें। आपके दिमाग में आने वाले आकार के साथ आपको बहुत अधिक अंक बनाने की आवश्यकता होगी।

मैं भी घटता बनाने का तरीका समझने और उन्हें अपनी छवि को जोड़ने के लिए अनियमित आकार

http://developer.apple.com/library/ios/#documentation/2ddrawing/conceptual/drawingprintingios/BezierPaths/BezierPaths.html

"आपका पथ को जोड़ना वक्र" पर विशेष नज़र में बनाने के लिए सेब डेवलपर गाइड को देख सिफारिश करेंगे । आपको लगता है कि आदेश पहेली टुकड़ा आकार बनाने के लिए आप बनाने के लिए कोशिश कर रहे हैं की आवश्यकता होगी

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

प्रयास करें इस विधि

- (void) setClippingPath:(UIBezierPath *)clippingPath : (UIImageView *)imgView; 
{ 
    if (![[imgView layer] mask]) 
     [[imgView layer] setMask:[CAShapeLayer layer]]; 

    [(CAShapeLayer*) [[imgView layer] mask] setPath:[clippingPath CGPath]]; 
} 

उपरोक्त विधि एक बेज़ियर पथ और एक imageView का समय लगेगा और फिर उस विशेष छवि दृश्य के लिए बेजियर पथ लागू करें। यह क्लिपिंग भी करेगा। बहुत सारे परीक्षण और त्रुटि लेंगे, मैं कल्पना करता हूं कि आकार को सही तरीके से प्राप्त करने के लिए कभी-कभी जटिल आकार बनाने में मुश्किल और निराशाजनक हो सकता है। इस कोड को

UIBezierPath *aPath = [UIBezierPath bezierPath]; 
    // Set the starting point of the shape. 
    [aPath moveToPoint:CGPointMake(0.0, 0.0)]; 
    // Draw the lines. 
    [aPath addLineToPoint:CGPointMake(50.0, 0.0)]; 
    [aPath addLineToPoint:CGPointMake(50.0, 50.0)]; 
    [aPath addLineToPoint:CGPointMake(0.0, 50.0)]; 
    [aPath closePath]; 

    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bar.png"]]; 
    imgView.frame = CGRectMake(0, 0, 100, 100); 
    [self setClippingPath:aPath :imgView]; 
    [self.view addSubview:imgView]; 

लागू करने की

त्वरित उदाहरण बस जल्दी से छवि के शीर्ष बाएं हिस्से के बाहर एक वर्ग बनाया है। यदि आप उदाहरण के लिए, एक स्क्वायर छवि थी, तो आप छवि की चौड़ाई और ऊंचाई के माध्यम से लूप कर सकते हैं, उपरोक्त कोड का उपयोग करके अलग-अलग वर्गों में फसल कर सकते हैं और उन्हें व्यक्तिगत रूप से वापस कर सकते हैं। जिग्स पहेली टुकड़ा बनाना बहुत जटिल है, लेकिन उम्मीद है कि इससे

+0

आपके प्रश्न के साथ आपकी प्रतिक्रिया और व्यय समय के लिए बहुत बहुत धन्यवाद, यह वास्तव में सराहनीय है। हां अब उन चीज़ों में स्पष्ट हूं जिनमें मुझे यात्रा करना चाहिए और यहां मेरा दूसरा प्रश्न छवि को फसल कर रहा है। क्या आपको उस पर कोई विचार है? इस यूबेज़ियर पथ का उपयोग करके प्लॉट वक्र के साथ फसल? – nik

+0

और मैं सिर्फ uiimage के साथ इस पैटर्न से मेल खाना चाहता हूं और मैं बस उस पैटर्न के साथ छवि को फसल करना चाहता हूं – nik

+1

मेरा संपादन देखें, मैंने एक विधि शामिल की है जिसका उपयोग आप कर सकते हैं जहां यह बेजियर पथ और एक छवि देखेंगे और आपके लिए क्लिपिंग करेगा । उम्मीद है कि – AdamM