由于太多的新知識,所以一開始先來科普每個概念。
- Quartz 2D
Quartz 2D可以在iOS環(huán)境和所有Mac OS X應(yīng)用程序內(nèi)核以外的二維繪圖引擎。你可以使用Quartz 2D應(yīng)用程序編程接口(API)來訪問功能,如基于路徑的繪圖、繪畫與透明度,著色,畫陰影,透明層,色彩管理,抗鋸齒渲染,生成PDF文檔,PDF元數(shù)據(jù)訪問。在iOS中,Quartz2D跟CG,OpenGl,還有UIKit一起工作。這里簡單介紹幾個技術(shù)的聯(lián)系
- Graphics Contexts
- Core Graphics
(一)Quartz 2D
page
只能用比喻去描述,就是好比你畫了一幅畫,你這張紙當(dāng)然還有畫的內(nèi)容就叫做page,這個page或許會成為真正的一張畫紙,如果你的輸出設(shè)備是一臺打印機(jī);或許是一個虛擬的現(xiàn)實(shí)設(shè)備,PDF;或許是一個位圖,這個實(shí)際的類型取決于你使用的Graphics Contexts。
painter`s model
我把這個理解為作畫的方式。這個方式可以分為給畫先畫出輪廓,然后再涂色,但是如果你想在畫出輪廓后的畫做出修改,只能繼續(xù)一層層的涂下去把之前的覆蓋了。

Quarts2D只能輸出到Graphics Context
剛剛提到的page,就是畫完之后的東西,現(xiàn)在需要把畫收藏起來,那這些destinatisons(Graphics Context)就是儲藏的東西,好比相框吧。

這些Graphics Context都是一個不透明的數(shù)據(jù)類型,(CGContextRef)用來裝載Quartz2D畫出來的page,這Graphics Context包含參數(shù)有圖形繪制的參數(shù),還有在特定設(shè)備上的表示形式。后面又說了,Graphics Context包含了我需要的所有目的地,因此我只需要拿著畫,通過Graphics Context并需要計(jì)算轉(zhuǎn)換,就能輸出到不同的destinations。
在iOS中可以使用以下Graphics Context(暫時感覺只有前兩個需要注意):
- bitmap graphics context
- PDF graphcs context
- window graphics context
- layer context