如果我对变暗的图像的确切色调等不是很挑剔,是否有一种快速而又肮脏的方法来绘制稍微变暗的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(...)摆脱了临时的黑色图像]