[英]The most elegant way of creating a fullscreen overlay on Mac OS X (Lion)?
我正在尋找在Mac OS X下創建全屏覆蓋的“最佳”方法。我想創建一個透明或半透明的覆蓋,它關心鼠標事件並顯示其他輸入/輸出元素。
此覆蓋圖應位於所有其他GUI項之上(例如CMD-Tab覆蓋圖)。
您知道如何有效地做到這一點嗎? 目前,我正在玩這種代碼:
int windowLevel = CGShieldingWindowLevel();
NSRect windowRect = [[NSScreen mainScreen] frame];
NSWindow *overlayWindow = [[NSWindow alloc] initWithContentRect:windowRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO
screen:[NSScreen mainScreen]];
[overlayWindow setReleasedWhenClosed:YES];
[overlayWindow setLevel:windowLevel];
[overlayWindow setBackgroundColor:[NSColor colorWithCalibratedRed:0.0
green:0.0
blue:0.0
alpha:0.5]];
[overlayWindow setAlphaValue:1.0];
[overlayWindow setOpaque:NO];
[overlayWindow setIgnoresMouseEvents:NO];
[overlayWindow makeKeyAndOrderFront:nil];
…效果很好,但我沒有選擇來啟動任何類型的動畫,例如緩慢增加透明度(緩慢使屏幕變暗)等。
盡管我不了解如何在不釋放該窗口並使它不時彈出的情況下將該窗口置於后台。
那么,有沒有更好的或“標准”的方法呢?
您可以使用NSViewAnimation 。 是的,它也可以在Windows上使用。
動畫的目標應該是窗口,並且其效果應該是淡入或淡出,具體取決於您是顯示還是隱藏它。 省略框架鍵,因為您可能不想移動窗口或調整窗口大小。
當然,您應該makeKeyAndOrderFront:
消息,因為您將使用淡入效果對它進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.