Cocoa 图表算法1.pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Cocoa 图表算法1

Cocoa 图表算法1 Quartz 介绍 Quartz 是 Cocoa 全部图表算法的核心。它是图表算法数据结构和画图的基础,也是 Mac OS X 的窗口服务器。 此入门级的教程会介绍 Cocoa 图表算法的基本概念,包括:矩形,点,颜色和系统坐标。 矩形和点 在 Quartz 的所有绘图包括矩形。在 Cocoa,你可以用 NSRect 结构去描述一个矩形的位置 和尺寸: (矩形不能自动进行描绘。在下面的例子中带有图表说明) typedef struct { NSPoint origin; NSSize size; } NSRect ; // 在原点画一个 20x20 大小的正方形。 NSRect myRect; myRect.origin.x = 0; myRect.origin.y = 0; myRect.size.width = 20; myRect.size.height = 20; 原点是画矩形开始的地方。点由 NSPoint 来描述,有坐标 x 和 y: typedef struct { float x; float y; } NSPoint ; // 画三个点 NSPoint point1; point1.x = 4; point1.y = 11; NSPoint point2; point2.x = 12; point2.y = 21; NSPoint point3; point3.x = 19; point3.y = 8; 矩形的大小区域是一个 NSSize,包含了长和宽。没有办法去描述一个 NSSize 实例,它必 须作为矩形的一部分来使用。 typedef struct { float width; float height; } NSSize ; Cocoa 大部分的两维画图是基于以上三个机构。注意,它们不是 Objective-C 的类。你能 直接在这些结构里调用方法,但是函数的形式。 所有在 Quartz 的尺寸都是 float 值,这比整形的坐标更好地控制画图。 简单的函数 Cocoa 有很多创建几何机构的函数。大部分列在 NSGeometry.h 文件的函数库里。 // 在坐标(20,20)处画一个点 NSPoint newPoint = NSMakePoint ( 20, 20 ); // 面积大小为为长 100,高 100 NSSize newSize = NSMakeSize ( 100, 100 ); // 利用前面的点和面积画一个矩形 NSRect newRect = NSMakeRect ( newPoint.x, newPoint.y, newSize.width, newSize.height ); // 也可以这样写 NSRect newRect = NSMakeRect ( 20, 20, 100, 100 ); 使用这些函数来创建结构,而不是手动来画,令代码清楚,搜索更方便。 Quartz 中的坐标 Cocoa 里画图的区域被作为一个矩形。Quartz 调用这个画图区域 “bounds”。一个 NSPoint 点就能描绘 bounds 视图的任何位置。 标准的 Quartz 系统坐标是基于 PDF 模式,也就是说画图要从左下角开始。这就是你在几 何教科书里面看到的。 有时候,如果原点在左上角,写画图代码更容易。例如,这和设计网页的原理一样。Quartz 调用这个倒装的系统坐标。 使用 NSView 的 convertPoint:fromView: 和 convertPoint:toView: 方法,就能对标准视 图和倒装视图的点进行置换。 矩形作为一个对象 因为矩形不是对象,你不能直接地保存几何机构到一个 NSArray, NSDictionary, 或者 NSSet,但你能把他们包在一个 NSValue 对象里: NSRect newRect = NSMakeRect ( 20, 20, 100, 100 ); NSValue * rectObject = [NSValue valueWithRect: newRect]; NSMutableArray * myArray = [NSMutableArray array]; [myArray addObject: rectObject]; NSRect originalRect = [[

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档