注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

又一个部落格

换过很多备忘录,不知道这本怎么样!

 
 
 

日志

 
 

Overview of Quartz 2D  

2010-06-18 01:28:48|  分类: cocoa |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
==Drawing Destinations: The Graphics Context==
Graphics Context是一个 Opaque Data(不透明数据类型:没有仔细研究过这个类型,只知道这个类型长度不定)
封装了Quartz 用来绘图的一些信息,包括绘图的参数和一个指定在那个设备上打印.
可以认为Graphics Context是绘图目的地.
Overview of Quartz 2D - happy dog - 又一个部落格
 
也就是说一般在哪个设备(比如,window,layer,bitmap,pdf,printer)上绘图,就使用相应的Graphics Context.
有以下Graphics Context:
bitmap graphics context : 主要是输出到位图上面,比如我们在制作一张图片的时候,通常用这个.
详见:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-CJBHBFFE
PDF graphics context : 创建pdf文件
详见:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-TPXREF118
window graphics context :在window中绘图,不过iphone一般不会用到.以为通常情况下都只有一个window.
详见:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-CJBDCHAC
layer context : offscreen drawing (意思不是在主线程上绘图).
详见:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_layers/dq_layers.html#//apple_ref/doc/uid/TP30001066-CH219-TPXREF101
PostScript graphics context : 暂不明
详见:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-CJBJDEFF

==Quartz 2D Opaque Data Types==
CGPathRef: 适合矢量图
CGImageRef: 适合绘制位图
CGLayerRef: 适合重复绘图,离屏绘图,差不多意思适合用来做动画的意思
CGPatternRef: 适合重复绘图
CGShadingRef ,CGGradientRef: 用来绘制渐变
CGFunctionRef: 适合用来绘制渐变阴影
CGColorRef ,CGColorSpaceRef
CGPSConverterRef: 转换PostScript 成为pdf
CGDataConsumerRef,CGDataProviderRef: 把数据移入移出Quartz.
CGFontRef: 写字.
CGPDFDictionaryRef, CGPDFObjectRef, CGPDFPageRef, CGPDFStream, CGPDFStringRef, and CGPDFArrayRef: 这些用来访问pdf的元数据
CGPDFScannerRef and CGPDFContentStreamRef: 解析pdf.

==Graphics States==
图形状态用来做什么? 
图形上下文包含很多个Graphics States,称为Graphics States栈,刚创建一个Graphics States的时候,
栈中什么都没,以后每保存一次Graphics States,栈中push一次,当restore的时候pop一次,pop出来的Graphics States
成为当前的Graphics States.
CGContextSaveGState :保存当前状态
CGContextRestoreGState :返回前一个状态

Graphics States其实就是一堆参数,如下
Current transformation matrix (CTM) “Transforms”
Clipping area “Paths”
Line: width, join, cap, dash, miter limit “Paths”
Accuracy of curve estimation (flatness)   “Paths”
Anti-aliasing setting “Graphics Contexts”
Color: fill and stroke settings “Color and Color Spaces”
Alpha value (transparency) “Color and Color Spaces”
Rendering intent “Color and Color Spaces”
Color space: fill and stroke settings “Color and Color Spaces”
Text: font, font size, character spacing, text drawing mode “Text”
Blend mode “Paths” and “Bitmap Images and Image Masks”


==Quartz 2D Coordinates==
Quartz把坐标系统分成了两个系统, user space 和device space, 中间使用current transformation matrix(CTM)
转换, 好处很明显,这样只要修改CTM就可以不失真的打印到各个不同的设备.
我想,在做动画的时候,比如平移,缩放,旋转时,CTM是至关重要的, 改变CMT应该比修改user space速度来的快的多.
原点(0,0):在左下角
Overview of Quartz 2D - happy dog - 又一个部落格
 

==Memory Management==
原理都和普通对象的内存管理一样, 但是release和retain的函数稍微有一些差别.
比如CGColorspace 对象, retain和release操作分别用CGColorSpaceRetain and CGColorSpaceRelease
也可以用函数 CFRetain and CFRelease,但是小心, CFRetain and CFRelease函数不能传 NULL 参数

参考:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html#//apple_ref/doc/uid/TP30001066-CH202-TPXREF101
  评论这张
 
阅读(1439)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017