4

透明な背景で画面に描画したいので、すべてが表示されます (開いているアプリケーションなど)。

私のカスタム NSWindowController の windowDidLoad には、次のものがあります。

[self.window setOpaque: NO];
[self.window setHasShadow:NO];
[self.window setBackgroundColor:[NSColor clearColor]];
[self.window setStyleMask:NSBorderlessWindowMask]; 

私のカスタム NSWindow オーバーライド canBecomeKeyWindow

- (BOOL)canBecomeKeyWindow {
   return YES;
}

私のビューは drawRect をオーバーライドします

- (void)drawRect:(NSRect)rect {
  [[NSColor clearColor]set];
  NSRectFill(rect);
  ...
}

問題:カスタム ビュー内でマウス イベントを使用して描画しようとすると、ウィンドウの下にあるビュー/アプリケーションがこれらのイベントを受け取ります。

NSWindow styleMask を NSBorderlessWindowMask に設定しない場合、またはカスタム ビューの背景色を半透明に設定する場合にのみ機能します。

[[NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:0.05] set]

完全な透明度と NSBorderlessWindowMask を使用して画面に描画するにはどうすればよいですか?

4

1 に答える 1

0

追加する

[self.window setIgnoresMouseEvents:NO];

私のカスタム NSWindowController の windowDidLoad にそれを解決しました

于 2013-09-25T17:05:20.197 に答える