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

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

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