2013-02-14 48 views
0

因爲,我需要一些先進的菜單欄項目,我使用自定義NSView子類作爲menubaritem的視圖。NSView drawRect和視網膜圖像

在drawrect中,我繪製了一些簡單的nsimage,它可以正常顯示,但在視網膜顯示器上它可以加載較小的圖像(是的,我有@ 2個圖形)。

代碼:

- (void)drawRect:(NSRect)dirtyRect 
{ 

    [self.statusItem drawStatusBarBackgroundInRect:dirtyRect withHighlight:self.isHighlighted]; 
    [icon scalesWhenResized]; 
    icon = self.isHighlighted ? self.alternateImage : [images objectAtIndex:index]; 
    NSSize iconSize = [icon size]; 

    NSRect bounds = self.bounds; 
    CGFloat iconX = roundf((NSWidth(bounds) - iconSize.width)/2); 
    CGFloat iconY = roundf((NSHeight(bounds) - iconSize.height)/2); 
    NSPoint iconPoint = NSMakePoint(iconX, iconY); 
    [icon drawAtPoint:iconPoint fromRect:bounds operation:NSCompositeSourceOver fraction:1]; 
} 

我用石英調試和真實的Retina MacBook筆記本進行了測試,一切都除了在菜單欄這個小圖像細膩。

更新:

self.images = [NSArray arrayWithObjects:[NSImage imageNamed:@"1.png"],[NSImage imageNamed:@"2.png"],[NSImage imageNamed:@"3.png"],[NSImage imageNamed:@"4.png"],[NSImage imageNamed:@"5.png"],[NSImage imageNamed:@"6.png"],[NSImage imageNamed:@"7.png"],[NSImage imageNamed:@"8.png"],[NSImage imageNamed:@"9.png"],[NSImage imageNamed:@"10.png"],[NSImage imageNamed:@"11.png"],[NSImage imageNamed:@"12.png"],[NSImage imageNamed:@"13.png"],[NSImage imageNamed:@"14.png"],[NSImage imageNamed:@"15.png"],[NSImage imageNamed:@"16.png"],[NSImage imageNamed:@"17.png"],[NSImage imageNamed:@"18.png"],[NSImage imageNamed:@"19.png"],[NSImage imageNamed:@"20.png"],[NSImage imageNamed:@"21.png"],[NSImage imageNamed:@"22.png"],[NSImage imageNamed:@"23.png"],[NSImage imageNamed:@"24.png"],[NSImage imageNamed:@"25.png"],[NSImage imageNamed:@"26.png"], 
        nil]; 
+0

什麼是'圖像'? – 2013-02-15 01:31:06

+0

Nsarray的nsimage對象,創建寬度imagaNaned方法 – dormitkon 2013-02-15 12:45:07

回答

3

這可能是一個在黑暗中拍攝,但如果你加載帶有擴展的圖像嘗試刪除它。

相反的: [NSImage imageNamed:@"icon.png"][NSImage imageNamed:@"icon"]

Xcode中設置「結合高分辨率藝術品」爲YES,這使得您的圖像合併成一個TIFF文件。因此,PNG文件不存在於軟件包中,因此未加載。

相關問題