由于太多的新知識蛾魄,所以一開始先來科普每個概念弱判。
- Quartz 2D
Quartz 2D可以在iOS環(huán)境和所有Mac OS X應用程序內核以外的二維繪圖引擎银锻。你可以使用Quartz 2D應用程序編程接口(API)來訪問功能食铐,如基于路徑的繪圖脱篙、繪畫與透明度嘲玫,著色悦施,畫陰影,透明層去团,色彩管理抡诞,抗鋸齒渲染,生成PDF文檔土陪,PDF元數(shù)據(jù)訪問昼汗。在iOS中,Quartz2D跟CG鬼雀,OpenGl顷窒,還有UIKit一起工作。這里簡單介紹幾個技術的聯(lián)系
- Graphics Contexts
- Core Graphics
(一)Quartz 2D
page
只能用比喻去描述源哩,就是好比你畫了一幅畫鞋吉,你這張紙當然還有畫的內容就叫做page,這個page或許會成為真正的一張畫紙励烦,如果你的輸出設備是一臺打印機谓着;或許是一個虛擬的現(xiàn)實設備,PDF坛掠;或許是一個位圖赊锚,這個實際的類型取決于你使用的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ù),還有在特定設備上的表示形式啃擦。后面又說了格带,Graphics Context包含了我需要的所有目的地撤缴,因此我只需要拿著畫刹枉,通過Graphics Context并需要計算轉換,就能輸出到不同的destinations屈呕。
在iOS中可以使用以下Graphics Context(暫時感覺只有前兩個需要注意):
- bitmap graphics context
- PDF graphcs context
- window graphics context
- layer context