2009-12-20 12 views
7

सम्मिश्रण के लिए एक ग्राफिक्स संदर्भ में एक PNG चित्र ड्राइंग मैं एक CGContext में PNG का की एक श्रृंखला आकर्षित करने के लिए की जरूरत है ताकि मैं उन्हें एक साथ मिश्रण कर सकते हैं:मोड हेरफेर

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetBlendMode(context, kCGBlendModeOverlay); 

वर्तमान में मैं सिर्फ ड्राइंग के आधार पर कार्य मेरे ऐप है प्रत्येक छवि को UIImageView के रूप में और उन्हें दृश्य फ़ाइल में एक सबव्यू के रूप में जोड़कर: [self addSubview:someImageView] ... लेकिन यह मिश्रण मोड मैनिपुलेशन के लिए अनुमति नहीं देता है, है ना?

someImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image-name.png"]]; 

तो मैं कोई भाग्य के साथ इनमें से किसी के साथ उन की जगह की कोशिश की है:

वर्तमान में UIImageView वार्स के माध्यम से सौंपा जा रहा है

[[UIImage imageNamed:@"image-name.png"] drawInRect:rect blendMode:kCGBlendModeOverlay alpha:1.0]; 

और यह एक एक CGImage की जरूरत है जो मैं मुझे यकीन नहीं है कि पीएनजी के साथ कैसे बनाना है:

CGContextDrawImage(context, rect, someCGImage); 

तो क्या क्या मैं याद कर रहा हूँ इन्हें किसी भी बातचीत से ट्रिगर नहीं किया जा रहा है, ऐप लोड होने पर उन्हें लोड/ड्रा करने की आवश्यकता है।

किसी भी लीड के लिए धन्यवाद। :)

उत्तर

19

आप UIImageViews का उपयोग करने की जरूरत नहीं है। इसके बजाय, UIGraphicsBeginImageContext और UIGraphicsEndImageContext पर कॉल के बीच अपनी ड्राइंग को ब्रैकेट करें।

उदाहरण के लिए (कोड की कोशिश की नहीं):

UIImage* uiimage = [UIImage imageNamed:@"image-name.png"]; 
UIImage* uiimage2 = [UIImage imageNamed:@"other-image-name.png"]; 

CGSize size = uiimage.size; 

UIGraphicsBeginImageContext(size); 

[uiimage drawAtPoint:CGPointZero blendMode:kCGBlendModeOverlay alpha:1.0]; 
[uiimage2 drawAtPoint:CGPointZero blendMode:kCGBlendModeOverlay alpha:1.0]; 

UIImage* blendedImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

आप तटरक्षक कॉल उपयोग करने के लिए, फोन चाहते हैं:

CGContextRef context = UIGraphicsGetCurrentContext(); 

संदर्भ रेफरी मिलता है।

+1

बीटीडब्लू, यूआईएममेज से सीजीआईमेज बनाना आसान है। UIImage पर CGImage संपत्ति है। हालांकि, मिश्रण UIImage और CGImage ड्राइंग दिनचर्या से परहेज करते हुए, अन्यथा आप पाएंगे कि चित्र संदर्भ उल्टा है। –

+0

मैं उस अंतिम भाग पर स्पष्ट नहीं था, क्योंकि मैं उन्हें आकर्षित करने से पहले uiimages घुमाने के लिए चाहता हूं, लेकिन CGContextRotateCTM (संदर्भ, 3.14) को कॉल करना; ड्राइंग कमांड वास्तव में इच्छित 180 डिग्री से घूमने से पहले नहीं था। और हां, ड्राआरक्ट विधि में मैंने जो पहला आदेश बुलाया था वह CGContextRef संदर्भ = UIGraphicsGetCurrentContext() था; विचार? – steganous

+0

ऐसा लगता है जैसे आप इसे सही कर रहे हैं। क्या आप अपना नया कोड पोस्ट कर सकते हैं? –

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