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 回答