我希望您能够在屏幕上绘制具有透明背景的图形,这样一切(例如打开的应用程序)仍然可见。
在我自定义的NSWindowController中的windowDidLoad方法中,我有以下内容:
在我自定义的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;
}
我的View覆盖了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模式下在屏幕上绘制图形?
[self.window setIgnoresMouseEvents:NO];
添加到我的自定义 NSWindowController 的 windowDidLoad 中解决了它。 - mc_plectrum