ある程度は、Core Image フィルターを使用してこれを行うことができます。ただし、これはプライベート API であるため、これらは将来の OS X リリースで変更または廃止される可能性があり、明らかにアプリを App Store に提出できないため、注意が必要です。パブリック API では、このようなことは不可能だと思います。
編集:パブリック API を使用するより良い方法については、Nikolai Ruhe の回答を参照してください。ガンマ テーブルではできなかったことが Core Image フィルターでできること (たとえば、ぼかしフィルターの適用など) があるので、ここに私の答えを残しておきます。
ウィンドウの背後にあるものを反転する方法の例を次に示します。
//Declarations to avoid compiler warnings (because of private APIs):
typedef void * CGSConnection;
typedef void * CGSWindowID;
extern OSStatus CGSNewConnection(const void **attributes, CGSConnection * id);
typedef void *CGSWindowFilterRef;
extern CGError CGSNewCIFilterByName(CGSConnection cid, CFStringRef filterName, CGSWindowFilterRef *outFilter);
extern CGError CGSAddWindowFilter(CGSConnection cid, CGSWindowID wid, CGSWindowFilterRef filter, int flags);
extern CGError CGSSetCIFilterValuesFromDictionary(CGSConnection cid, CGSWindowFilterRef filter, CFDictionaryRef filterValues);
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[self.window setOpaque:NO];
[self.window setAlphaValue:1.0];
[self.window setBackgroundColor:[NSColor colorWithCalibratedWhite:0.0 alpha:0.1]];
self.window.level = NSDockWindowLevel;
CGSConnection thisConnection;
CGSWindowFilterRef compositingFilter;
int compositingType = 1; // under the window
CGSNewConnection(NULL, &thisConnection);
CGSNewCIFilterByName(thisConnection, CFSTR("CIColorInvert"), &compositingFilter);
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:3.0] forKey:@"inputRadius"];
CGSSetCIFilterValuesFromDictionary(thisConnection, compositingFilter, (CFDictionaryRef)options);
CGSAddWindowFilter(thisConnection, (CGSWindowID)[self.window windowNumber], compositingFilter, compositingType);
}
@end
(スティーブン・トラウトン・スミスの記事はこちら)
何らかの理由でウィンドウの背景色が完全に透明ではない必要があるため、効果は完全ではありませんが、かなり近い色です。
画面全体に影響を与えるには、にignoresMouseEvents
設定されたボーダレス ウィンドウを作成するYES
ことができます (そのため、クリックすることができます)。
他のフィルターを試すことはできますが、すべてのフィルターがこの目的で機能するとは限りません。CGS...
このリバース エンジニアリングされたヘッダーには、関数に関する情報がいくつかあります: http://code.google.com/p/undocumented-goodness/source/browse/trunk/CoreGraphics/CGSPrivate.h