【Cocoa(mac) Application 开发系列之三】自定义NSView并绘制一些常见的图形及字符串

简介:

不多说,比较简单,直接给出源码,大家作为参考吧。

对于Cocoa application 话说回来比较easy,如果之前你接触过iOS 的IB的话 ,基本上没什么可说的,上手很快;

因此对于Cocoa Application 不会太快的更新,接着Himi将对之前做的动编彻底的更新一版;后期有时间将继续更新此系列;

?
1
言归正传,对于自定义NSView上一篇已经介绍了,而且本篇主要继续深入NSView的drawRect进行继续研究,示例代码如下,比较容易理解,而且都已备注的很清楚;
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//
//  HView.m
//
//  Created by Himi on 12-6-7.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import "HView.h"
 
@implementation HView
 
- (id)initWithFrame:(NSRect)frame
{
     self = [super initWithFrame:frame];
     if  (self) {
         // Initialization code here.
     }
 
     return  self;
}
 
- ( void )drawRect:(NSRect)dirtyRect
{
 
     //-----------获取整个MyView尺寸------------
     NSRect screen = [self bounds];
     int  SW = screen.size.width;
     int  SH = screen.size.height;
 
     //-----------设置整个MyView的颜色------------
     [[NSColor grayColor] set];
 
     //-----------填充整个MyView---------------
     NSRectFill(screen);
 
     //-----------绘制字符串---------------
     NSString * strH= @ "基础绘制   --By Himi" ;
     //--绘制不带属性字符串
     [strH drawAtPoint:NSMakePoint(SH*0.5, SH-30) withAttributes:NULL];
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
     //--绘制带属性字符串
     NSMutableDictionary *md = [NSMutableDictionary dictionary];
     [md setObject:[NSFont fontWithName:@ "Times"  size:20] forKey:NSFontAttributeName];
     [strH drawAtPoint:NSMakePoint(SH*0.5, SH-70) withAttributes:md];
 
     //--------绘制矩形----
     NSRect rect1 = NSMakeRect(SH*0.5, SH-100, 30, 20);
     NSRect rect2 = NSMakeRect(SH*0.5, SH-130, 30, 20);
     //填充矩形
     [NSBezierPath fillRect:rect1];
     //绘制矩形
     [NSBezierPath strokeRect:rect2];
 
     //--------绘制线条(十字线)----
     [[NSColor greenColor] set];
     NSPoint  bm =NSMakePoint(SW*0.5, 0);
     NSPoint  top =NSMakePoint(SW*0.5, SH);
     NSPoint  lf =NSMakePoint(0, SH*0.5);
     NSPoint  rt =NSMakePoint(SW, SH*0.5);
     [NSBezierPath strokeLineFromPoint:bm toPoint:top];
     [NSBezierPath strokeLineFromPoint:lf toPoint:rt];
 
     //-------绘制椭圆
     [[NSColor redColor] set];
     [[NSBezierPath bezierPathWithOvalInRect:screen] stroke];
 
     [self setNeedsDisplay:YES]; // 强制绘画
 
//【备注】
//    CGContextRef ref = [[NSGraphicsContext currentContext] graphicsPort];// 获取画布
//    CGContextFlush(ref);//刷新画布
}
 
-( void ) mouseDragged:(NSEvent *)theEvent{
     NSPoint mp = [self convertPoint:[theEvent locationInWindow] fromView:nil]; // 鼠标新坐标
     NSLog(@ "mouseDragged~%f,%f" ,mp.x,mp.y);
 
}
-( void ) mouseUp:(NSEvent *)theEvent{
     NSLog(@ "mouseUp" );
 
}
-( void ) mouseDown:(NSEvent *)theEvent{
     NSLog(@ "mouseDown" );
 
}
@end

 注意的是:备注 这两行代码是直接通过获取画布,更新画布进行绘制,其中绘制代码省略,比较容易,这里起个头,推荐使用此种方式绘制;对于做游戏的我们,对于画布刷新画布我想是再熟悉不过了!

运行截图:










本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/969974,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
Android开发 iOS开发 开发者
轻松实现 UniApp Xcode 上传 IPA 无需 Mac,appuploder 一键上传助你高效开发!
轻松实现 UniApp Xcode 上传 IPA 无需 Mac,appuploder 一键上传助你高效开发!
|
关系型数据库 MySQL 应用服务中间件
Mac PHP-Nginx-Mysql 本地开发日常启动流程
Mac PHP-Nginx-Mysql 本地开发日常启动流程
74 1
|
8月前
|
调度 iOS开发 MacOS
【MacOS 系列】mac常用快捷键收集,包含提高开发效率、精选快捷键、内置截图快捷键
【MacOS 系列】mac常用快捷键收集,包含提高开发效率、精选快捷键、内置截图快捷键
169 0
|
15天前
「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件
本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息,页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。
116 38
|
2月前
|
UED
「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件
本篇将带你实现一个自定义评分星级组件,用户可以通过点击星星进行评分,并实时显示评分结果。为了让界面更具吸引力,我们还将添加一只小猫图片作为评分的背景装饰。
77 6
|
2月前
|
前端开发 开发者
「Mac畅玩鸿蒙与硬件23」鸿蒙UI组件篇13 - 自定义组件的创建与使用
自定义组件可以帮助开发者实现复用性强、逻辑清晰的界面模块。通过自定义组件,鸿蒙应用能够提高代码的可维护性,并简化复杂布局的构建。本篇将介绍如何创建自定义组件,如何向组件传递数据,以及如何在不同页面间复用这些组件。
54 5
|
3月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
63 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
8月前
|
XML Android开发 数据格式
Android 自定义View 之 Mac地址输入框(下)
Android 自定义View 之 Mac地址输入框(下)
|
8月前
|
XML Java Android开发
Android 自定义View 之 Mac地址输入框(上)
Android 自定义View 之 Mac地址输入框(上)
117 0
|
小程序 IDE 前端开发
mac开发必备软件
作为一名不资深开发工程师,用对工具可以节省我们大量的时间用来摸鱼,比如我的这篇文章就是在摸鱼的时候写的,在使用mac的过程中我下载过大量的软件,最终经过时间的洗礼留下了一些比较优秀的软件推荐给大家,如果你也有宝藏软件欢迎推荐!