2011-03-30 11 views
6

मैं एक साधारण प्रोग्राम बना रहा हूं जो गेम खेलने के लिए गेम कार्ड बनाता है। मैंने इसे परीक्षण के लिए मेरे कुछ दोस्तों को भेज दिया है, लेकिन वे वास्तव में छवियों को सहेजना चाहते हैं, न केवल उन्हें प्रिंट करें। मैंने इसे .png फ़ाइल के रूप में सहेजने की कोशिश की है। मुझे यहां प्रश्न पूछना है।एक एनएसवी व्यू को एक पीएनजी फ़ाइल में सहेज रहा है?

  • मैं इसे अपने दृश्य को एक .png फ़ाइल के रूप में कैसे सहेज सकता हूं, जिसमें सभी दृश्यों के एनएसआईमेजवेल्स शामिल हैं।

  • उपयोगकर्ताओं को एक प्रारूप का चयन करने की अनुमति देने के लिए मैं एक NSPavePanel में NSPopup बटन कैसे जोड़ सकता हूं?

किसी भी मदद की बहुत सराहना की जाती है।

उत्तर

12

सबसे पहले अपने को देखने के एक TIFF प्रतिनिधित्व बनाएँ:

// Get the data into a bitmap. 
[self lockFocus]; 
rep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:[self bounds]]; 
[self unlockFocus]; 
data = [rep TIFFRepresentation]; 

कई फ़ाइल प्रकारों का समर्थन करने के लिए, उपयोग करें:

data = [rep representationUsingType:(NSBitmapImageFileType)storageType 
properties:(NSDictionary *)properties]; 

NSBitmapImageFileType एक enum बिटमैप छवियों के लिए एक फ़ाइल प्रकार को निर्दिष्ट स्थिर है। यह एनएसबीएमपीफ़ाइल टाइप, एनएसजीआईएफफ़ाइल टाइप, एनएसजेपीईजीफ़ाइल टाइप, एनएसपीएनजीफ़ाइल टाइप, या एनएसटीआईएफएफफाइल टाइप हो सकता है।

आप NSSavePanel अनुकूलित करने के लिए की जरूरत है, गौण विचारों पर गौर: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/AppFileMgmt/Articles/ManagingAccessoryViews.html

+0

यह काम करता है, लेकिन मैं इसे फाइल को सेव कैसे कर सकता हूँ? – Justin

+0

संपादित करें: ओह, इसे फिर से पढ़ें। यह नहीं पता था कि आप पहले ही इसे कवर कर चुके हैं। इसे कुछ में हटा देगा। –

+2

- [NSData लिखने के लिए फ़ाइल: (एनएसएसटींग *) पथ परमाणु रूप से: (बूल) ध्वज] ब्याज का होगा। –

4
// Get the data into a bitmap. 
[viewBarChart lockFocus]; 
NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:[viewBarChart bounds]]; 
[viewBarChart unlockFocus]; 
NSData *exportedData = [rep representationUsingType:NSJPEGFileType properties:nil]; 

NSSavePanel *savepanel = [NSSavePanel savePanel]; 
savepanel.title = @"Save chart"; 

[savepanel setAllowedFileTypes:[NSArray arrayWithObject:@"jpg"]]; 

[savepanel beginSheetModalForWindow:self.view.window completionHandler:^(NSInteger result) 
{ 
    if (NSFileHandlingPanelOKButton == result) 
    { 
     NSURL* fileURL = [savepanel URL]; 

     if ([fileURL.pathExtension isEqualToString:@""]) 
      fileURL = [fileURL URLByAppendingPathExtension:@"jpg"]; 

     [exportedData writeToURL:fileURL atomically:YES]; 
    } 

    [rep release]; 
}]; 
संबंधित मुद्दे