【问题标题】:NSMenuItem image color becomes dark when selectedNSMenuItem 选择时图像颜色变暗
【发布时间】:2023-03-18 00:00:01
【问题描述】:

我正在使用带有标题和图像的 NSPopUpButton。以下是我的代码:

[self.popup addItemWithTitle:@"Parag"];
[[self.popup lastItem] setImage:[NSImage swatchWithColor:[NSColor greenColor] size:NSMakeSize(10.0, 10.0)]];

Creating NSImage from NSColor

@interface NSImage (ImageAdditions)

+(NSImage *)swatchWithColor:(NSColor *)color size:(NSSize)size;


@end

@implementation NSImage (ImageAdditions)

+(NSImage *)swatchWithColor:(NSColor *)color size:(NSSize)size
{
    NSImage *image = [[NSImage alloc] initWithSize:size];
    [image lockFocus];
    [color drawSwatchInRect:NSMakeRect(0, 0, size.width, size.height)];
    [image unlockFocus];
    return image;
}

@end

如果我选择弹出按钮,图像颜色会变暗:

【问题讨论】:

  • 在 mojave 下正常工作

标签: objective-c macos cocoa nsmenuitem nspopupbutton


【解决方案1】:

您是否尝试过使用 NSRectFill 为图像绘制颜色?据我所知,drawSwatchInRect 做了一些 alpha 合成。

@implementation NSImage (ImageAdditions)

+(NSImage *)swatchWithColor:(NSColor *)color size:(NSSize)size
{
    NSImage *image = [[NSImage alloc] initWithSize:size];
    [image lockFocus];
    [color set];
    NSRectFill(NSMakeRect(0, 0, size.width, size.height));
    [image unlockFocus];
    return image;
}

@end

【讨论】:

  • 同样的问题。我认为是因为弹出按钮上的选择层。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 2013-01-09
相关资源
最近更新 更多