淡色表示された画像の正確なトーンなどにあまりこだわらない場合、このように NSImage をわずかに淡色表示する簡単で汚れた方法はありますか? オンラインで検索しましたが、探しているものを実際に見つけることができません (しかし、グラフィックスと正しい技術用語を理解することに関してはあまり得意ではありません)。
上記のように Xcode のアイコンを暗くするのと同じユースケースで、実際にアイコンを暗くしています (つまり、ドキュメントに保存されていない変更があります)。
淡色表示された画像の正確なトーンなどにあまりこだわらない場合、このように 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
)。次に、不透明度 75% の淡色表示のアイコンを描画します。
[編集: NSRectFillUsingOperation(...) を使用して、Nikolai Ruheのアドバイスに従って、一時的な黒い画像を削除しました]