2012-06-05 5 views
6

मेरे पास एक स्रोत छवि है जिसमें एक चरणीय चौड़ाई और ऊंचाई है, जो मुझे एक पूर्णस्क्रीन आईपैड UIImageView पर दिखाना चाहिए, लेकिन छवि के चारों ओर सीमाओं के अतिरिक्त। तो मेरा काम एक चारों ओर एक सफेद सीमा के साथ एक नई छवि बनाना है, लेकिन छवि पर खुद को ओवरलैप नहीं करना है। मैं वर्तमान में इस कोड के माध्यम से ओवरलैपिंग के साथ कर रहा हूँ:कोरग्राफिक्स एक सफेद कैनवास पर एक छवि खींचते हैं

- (UIImage*)imageWithBorderFromImage:(UIImage*)source 
{ 
    CGSize size = [source size]; 
    UIGraphicsBeginImageContext(size); 
    CGRect rect = CGRectMake(0, 0, size.width, size.height); 
    [source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0]; 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); 
    CGContextSetLineWidth(context, 40.0); 
    CGContextStrokeRect(context, rect); 
    UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return testImg; 
} 

किसी को भी मुझे बता सकते हैं कि कैसे मैं पहली बार एक सफेद कैनवास वह यह है कि 40 पिक्सल स्रोत छवि से प्रत्येक दिशा में बड़ा आकर्षित और फिर उस पर उस छवि को आकर्षित करते हैं ?

उत्तर

12

मैंने इसे काम करने के लिए अपना कोड समायोजित किया। मूल रूप से यह क्या करता है: अपनी छवि + 2 * मार्जिन के आकार के

  1. सेट कैनवास आकार
  2. पृष्ठभूमि रंग (आपके मामले में सफेद) के साथ पूरे कैनवास भरें
  3. उचित आयत में अपनी छवि ड्रा (प्रारंभिक आकार और आवश्यक मार्जिन के साथ)

परिणामस्वरूप कोड है:

- (UIImage*)imageWithBorderFromImage:(UIImage*)source 
{ 
    const CGFloat margin = 40.0f; 
    CGSize size = CGSizeMake([source size].width + 2*margin, [source size].height + 2*margin); 
    UIGraphicsBeginImageContext(size); 

    [[UIColor whiteColor] setFill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, size.width, size.height)] fill]; 

    CGRect rect = CGRectMake(margin, margin, size.width-2*margin, size.height-2*margin); 
    [source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0]; 

    UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return testImg; 
} 
+0

बहुत बढ़िया है, धन्यवाद Vlad – Eugene