如何在透明的NSWindow上使用透明的NSView进行绘图?

5
我希望您能够在屏幕上绘制具有透明背景的图形,这样一切(例如打开的应用程序)仍然可见。
在我自定义的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
1个回答

0

添加

[self.window setIgnoresMouseEvents:NO];

将代码添加到自定义NSWindowController的windowDidLoad方法中解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接