【发布时间】:2020-12-11 19:21:03
【问题描述】:
我正在建立一个包含图像的子菜单项列表。我确实从包中加载了一个图像,然后想在菜单项样本中绘制它。
代码如下:
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:@"Title" action:nil keyEquivalent:@""];
[item setAction:@selector(action:)];
[item setTarget:self];
[item setEnabled:YES];
NSImage *img = [[NSImage alloc] initWithSize:NSMakeSize(24, 16)];
[img lockFocus];
NSString *imgFile = [mainBundle pathForResource:@"swatch" ofType: @"png"];
NSImage *swtch = [[NSImage alloc] initWithContentsOfFile:imgFile];
NSRect imgRect;
imgRect.origin = NSZeroPoint;
imgRect.size = [swtch size];
[swtch drawInRect:NSMakeRect(0, 0, 24, 16)
fromRect:imgRect
operation:NSCompositingOperationSourceOver
fraction:1.0f];
[img unlockFocus];
[item setImage:[img copy]];
如果我从子菜单中选择菜单项,NSPopupButton 会显示正确的图像。
如果我从“img”获得位图表示,那是正确的,是“swtch”的缩小副本。
但是菜单项看起来不对:
它只是在大苏尔开始的,以前一切看起来都很好。 我需要设置不同的菜单项或其单元格吗?
【问题讨论】:
标签: objective-c image nsmenuitem macos-big-sur