如何在macOS中向屏幕(NSScreen)添加水印

时间:2019-04-16 04:22:35

标签: macos cocoa

我正在制作一个将在Mac的实时屏幕上添加水印的应用程序。我应该选择哪个API?我尝试了NSScreen,但没有找到任何可以向NSScreen添加视图的方法。

Mac Appstore中的Sakura这样的应用程序。请检查一下,我不知道我应该使用哪个API。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是定义一个自定义的透明窗口。

创建窗口时,请指定特殊的BorderlessWindowMask。这样会创建一个窗口,该窗口是屏幕上的简单矩形区域,没有标题栏,边缘等。

然后您设置了一堆属性,以便

  • 该窗口浮在其他窗口上方
  • 它不响应事件
  • 它没有阴影
  • 背景是透明的

依此类推

@implementation WatermarkOverlayWindow

- (id)initWithContentRect:(NSRect)contentRect
{
    self = [super initWithContentRect:contentRect
                            styleMask:NSBorderlessWindowMask
                              backing:NSBackingStoreBuffered
                                defer:NO];
    if (self!=nil)
        {
        self.level = NSFloatingWindowLevel;
        self.ignoresMouseEvents = YES;
        self.releasedWhenClosed = NO;
        self.movableByWindowBackground = NO;
        self.alphaValue = 1.0f;
        self.backgroundColor = NSColor.clearColor;
        self.opaque = NO;
        self.hasShadow = NO;
        }
    return self;
}

...

现在,您可以在该窗口中添加半透明视图,这些视图将显示在屏幕上。另外,您可以在该窗口中放置不透明视图,然后将窗口的整体alphaValue更改为小于1.0的位置。