微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

http://blog.csdn.net/xiaominghimi/article/details/7642624


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

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

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

言归正传,对于自定义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;
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];
39
40
41
42
43
44
45
46
47
//--绘制带属性字符串
NSMutableDictionary *md = [NSMutableDictionary dictionary];
[md setobject:[NSFont fontWithName:@ "Times" size:20] forKey:NSFontAttributeName];
ottom:0px!important; margin-left:0px!important; padding-top:0px!important; padding-right:1em!important; padding-bottom:0px!important; padding-left:1em!important; border-top-width:0px!important; border-right-width:0px!important; border-bottom-width:0px!important; border-left-width:0px!important; border-style:initial; border-color:initial; font-weight:normal!important; font-style:normal!important; font-size:1em!important; font-family:Consolas,SH-70) withAttributes:md];
 
//--------绘制矩形----
NSRect rect1 = NSMakeRect(SH*0.5,SH-100,30,20);
NSRect rect2 = NSMakeRect(SH*0.5,SH-130,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);//刷新画布
}
 
-( ) mouseDragged:(NSEvent *)theEvent{
NSPoint mp = [self convertPoint:[theEvent locationInWindow] fromView:nil]; // 鼠标新坐标
NSLog(@ "mouseDragged~%f,%f" ,mp.x,mp.y);
 
}
) mouseUp:(NSEvent *)theEvent{
"mouseUp" );
 
}
) mouseDown:(NSEvent *)theEvent{
"mouseDown" );
 
}
@end

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

运行截图:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐