Как добавить водяной знак на экран (NSScreen) в macOS - PullRequest
0 голосов
/ 16 апреля 2019

Я делаю приложение, которое добавит водяной знак на экран в реальном времени на Mac.Какой API мне выбрать?Я попробовал NSScreen, но я не нашел ни одного метода, который мог бы добавить представление к NSScreen.

Такое приложение, как Sakura в Mac Appstore. Пожалуйста, проверьте его, я понятия не имею, какой API следует использовать.

1 Ответ

1 голос
/ 16 апреля 2019

Самое простое решение - определить собственное прозрачное окно.

Когда вы создаете окно, вы указываете специальный 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.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...