博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Cocoa(mac) Application 开发系列之三】自定义NSView并绘制一些常见的图形及字符串...
阅读量:7041 次
发布时间:2019-06-28

本文共 2484 字,大约阅读时间需要 8 分钟。

       本站文章均为原创,转载务必在明显处注明:

转载自 原文链接: 

 本博客最新动态!及时将最新博文通知您!

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

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

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

言归正传,对于自定义NSView上一篇已经介绍了,而且本篇主要继续深入NSView的drawRect进行继续研究,示例代码如下,比较容易理解,而且都已备注的很清楚;
////  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];
//--绘制带属性字符串    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

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

运行截图:

 

 

你可能感兴趣的文章
《Web测试囧事》——2.6 时区不一致造成邮件发送异常
查看>>
需求管理是需求开发的基础
查看>>
干货:模板网站SEO优化技巧!
查看>>
CB Insights:2017年Q1网络安全领域共实现140宗投资
查看>>
安捷伦2016 Q2收入较去年增长6% 调升全年收入指导范围
查看>>
最新 Chrome 可让本地文件在网页应用中打开
查看>>
《Python地理空间分析指南(第2版)》——1.10 GIS中矢量数据的基本概念
查看>>
MySQL自动化运维工具 Inception
查看>>
QGraphicsItem如何使用信号/槽
查看>>
《计算机科学导论》一第2章
查看>>
分布式列式数据库 IndexR 开源啦!
查看>>
微软被评为全球第二大影响力公司
查看>>
《Web前端工程师修炼之道(原书第4版)》——我需要学习哪些语言
查看>>
《计算机视觉:模型、学习和推理》——3.5 一元正态分布
查看>>
Uncode-DAL 1.0.18 发布,Java 通用数据访问层
查看>>
《Excel 职场手册:260招菜鸟变达人》一第 8 招 怎样在多张工作表录入相同的数据——创建工作组...
查看>>
《机器人操作系统ROS原理与应用》——第1章 企业大数据战略定位
查看>>
《深入理解Android:卷III A》一一1.2Android的编译
查看>>
《CCNA ICND2(200-101)认证考试指南(第4版)》——1.1节“我已经知道了吗?”小测试...
查看>>
FireFox 增加新侧栏 方便用户查看已同步标签
查看>>