如果我对变暗的图像的确切色调等不是很挑剔,是否有一种快速而又肮脏的方法来绘制稍微变暗的NSImage,像这样?我已经在网上搜索过,却无法真正找到所需的内容(但是在理解图形和正确的技术术语方面我不是很好。)


我实际上是在与上述Xcode调光图标相同的用例中调光图标(即文档中有未保存的更改)。

最佳答案

这对我来说很好:

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对其进行 mask )。然后,我仅以不透明度为75%的方式绘制变暗的图标。

[编辑:根据 Nikolai Ruhe 的建议,使用NSRectFillUsingOperation(...)摆脱了临时的黑色图像]

09-25 18:46