Cocoa學習之路 屏幕壞點檢查程序開發(fā)實例
Cocoa學習之路 屏幕壞點檢查程序開發(fā)實例是本文要介紹的內(nèi)容,不多說,直接進入話題。這個屏幕壞點檢查程序的原理是:用 red,green,blue,black,white 五種顏色以全屏模式顯示,從而檢測屏幕是否存在壞點、暗點、亮點。在全屏模式下單擊切換到下一個顏色,雙擊退出。主要學習Cocoa創(chuàng)建一個全屏窗口和事件處理,主要參考資料有:
RoundTransparentWindow、NSWindow 、NSEvent 。
在cocoa中全屏窗口需要繼承NSWindow重寫- (id)initWithContentRect,設(shè)置windowStyle為NSBorderlessWindowMask的無邊界窗口
- - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {
- // Using NSBorderlessWindowMask results in a window without a title bar.
- self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
- if (self != nil) {
- [self setLevel:NSStatusWindowLevel];
- [self setBackgroundColor:[NSColor redColor]];
- NSRect screenFrame = [[NSScreen mainScreen] frame];
- [self setFrame:NSMakeRect(0, 0, screenFrame.size.width, screenFrame.size.height) display:YES animate:YES];
- }
- return self;
- }
如果想要全屏窗口中響應(yīng)鼠標事件,必須重寫一下- (BOOL)canBecomeKeyWindow,使其總是返回YES:
- - (BOOL)canBecomeKeyWindow
- {
- return YES;
- }
在 InterfaceBuilder 中為窗口綁定Class為重寫的全屏窗口Class就可以了。這樣一個全屏窗口就建立了,還需要創(chuàng)建兩個事件來處理顏色切換或關(guān)閉全屏窗口。需要在全屏窗口中單擊時切換到下一個顏色,如果是雙擊時就退出全屏窗口。mouseUp事件處理顏色切換,mouseDown事件點擊兩次的時候退出全屏窗口。
- - (void)mouseUp:(NSEvent *)theEvent {
- NSColor *wColor = [self backgroundColor];
- if(wColor == [NSColor redColor]){
- [self setBackgroundColor:[NSColor greenColor]];
- }
- else if(wColor == [NSColor greenColor]){
- [self setBackgroundColor:[NSColor blueColor]];
- }
- else if(wColor == [NSColor blueColor]){
- [self setBackgroundColor:[NSColor blackColor]];
- }
- else if(wColor == [NSColor blackColor]){
- [self setBackgroundColor:[NSColor whiteColor]];
- }
- else {
- [self orderOut:nil]; // 隱藏窗口
- }
- }
- - (void)mouseDown:(NSEvent *)theEvent {
- // 判斷雙擊
- if ( [theEvent clickCount] == 2 )
- {
- [self orderOut:nil]; // 隱藏窗口
- }
- }
小結(jié):Cocoa學習之路 屏幕壞點檢查程序開發(fā)實例的內(nèi)容介紹完了,希望本文對你有所幫助!
轉(zhuǎn)自:http://www.uedidea.com/cocoa-screen-check.html