代码之家  ›  专栏  ›  技术社区  ›  d11wtq Vadim Baryshev

绘制暗显的NSImage的最简单方法(如禁用视图)

  •  5
  • d11wtq Vadim Baryshev  · 技术社区  · 15 年前

    如果我不是真的对调暗图像的确切色调等挑剔,有没有一种快速和肮脏的方法来画一个稍微调暗的NSImage,像这样?我在网上搜索了一下,找不到我要找的东西(但在理解图形和正确的技术术语方面,我不是很擅长)。

    Non-dimmed Dimmed

    实际上,我正在为与上面类似的Xcode暗显图标相同的用例暗显图标(即文档有未保存的更改)。

    1 回复  |  直到 15 年前
        1
  •  16
  •   Regexident Amit Attias    15 年前

    这对我很有用:

    NSImage *iconImage = [NSImage imageNamed:@"Icon"];
    NSSize iconSize = [iconImage size];
    NSRect iconRect = NSMakeRect(0.0, 0.0, iconSize.width, iconSize.height);
    [iconImage lockFocus];
    [[NSColor colorWithCalibratedWhite:0.0 alpha:0.33] set];
    NSRectFillUsingOperation(iconRect, NSCompositeSourceAtop);
    [iconImage unlockFocus];
    [iconImage drawInRect:iconRect
                  fromRect:iconRect
                 operation:NSCompositeSourceOver
                  fraction:0.75];
    

    基本上我添加了一个黑色图层,在实际图标的顶部有33%的不透明度(用 NSCompositeSourceAtop ). 然后我画了一个75%不透明的暗图标。

    [编辑:根据建议,使用NSRectFillUsingOperation(…)删除临时黑色图像 尼古拉·鲁厄 ]