Cocoa 基础学习:屏幕坏点检查程序开发实例
2010-12-29 17:10
741 查看
这个屏幕坏点检查程序的原理是:用 red,green,blue,black,white 五种颜色以全屏模式显示,从而检测屏幕是否存在坏点、暗点、亮点。在全屏模式下单击切换到下一个颜色,双击退出。主要学习Cocoa创建一个全屏窗口和事件处理,主要参考资料有:RoundTransparentWindow, NSWindow, NSEvent
在cocoa中全屏窗口需要继承NSWindow重写- (id)initWithContentRect,设置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;
}
如果想要全屏窗口中响应鼠标事件,必须重写一下- (BOOL)canBecomeKeyWindow,使其总是返回YES:
- (BOOL)canBecomeKeyWindow
{
return YES;
}
在 InterfaceBuilder 中为窗口绑定Class为重写的全屏窗口Class就可以了。这样一个全屏窗口就建立了,还需要创建两个事件来处理颜色切换或关闭全屏窗口。需要在全屏窗口中单击时切换到下一个颜色,如果是双击时就退出全屏窗口。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]; // 隐藏窗口
}
}
相关附件:源代码下载, 程序下载
转自 http://www.uedidea.com/cocoa-screen-check.html
在cocoa中全屏窗口需要继承NSWindow重写- (id)initWithContentRect,设置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;
}
如果想要全屏窗口中响应鼠标事件,必须重写一下- (BOOL)canBecomeKeyWindow,使其总是返回YES:
- (BOOL)canBecomeKeyWindow
{
return YES;
}
在 InterfaceBuilder 中为窗口绑定Class为重写的全屏窗口Class就可以了。这样一个全屏窗口就建立了,还需要创建两个事件来处理颜色切换或关闭全屏窗口。需要在全屏窗口中单击时切换到下一个颜色,如果是双击时就退出全屏窗口。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]; // 隐藏窗口
}
}
相关附件:源代码下载, 程序下载
转自 http://www.uedidea.com/cocoa-screen-check.html
相关文章推荐
- 嵌入式系统学习(五)-NanoPi2基础实例开发(裸机程序按钮控制LED灯)
- IOS开发基础—通过联系人管理实例学习xib的基本使用
- 程序开发基础学习二(C++ Google Style 命名规则)
- Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例
- Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。 1、Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境。 是什么因素使一个程序成为Co
- Android 开发实例教程 零基础学习 1小时入门 图解说明教程 化复杂为简单 配置好的android开发环境 带实例
- [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行
- [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行
- [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行
- Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例
- [转]程序开发基础学习二(C++ Google Style 命名规则)
- 东翌编程推出手把手0基础学习微信小程序开发
- IOS开发基础—通过Tom猫实例学习uiimageview的基本使用
- 【学习笔记】零基础C#窗口程序开发入门
- 程序开发基础学习三(boost::bind 函数学习)
- 一个简单的SWT程序实例及详解-Java基础-Java-编程开发
- 【学习笔记】零基础C#窗口程序开发入门
- 程序开发基础学习三(boost::bind 函数学习)
- 学习android开发的小笔记(1)-------- 一个检查android网络状态的程序
- Jcrontab - java定时程序进阶学习-Java基础-Java-编程开发