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];
什么是'图像'? – 2013-02-15 01:31:06
Nsarray的nsimage对象,创建宽度imagaNaned方法 – dormitkon 2013-02-15 12:45:07