介紹一下Quartz 2D,主要資料來源于蘋果官網;不足之處有請 大家拍磚。
Quartz 2D是iPhone OS和Mac OS X環境下的二維繪圖引擎。借用Quartz 2D API,你可以接觸到這樣一些特性:基于路徑的繪圖,透明度繪圖,遮蓋,陰影,透明層,顏色管理,防鋸齒渲染,生成PDF,以及PDF元數據相關處理。可能的時候,Quartz 2D會借助硬件的力量。
在Mac OS X下,Quartz 2D能與其它圖形圖像技術相結合——Core Image,Core Video,OpenGL,以及Quick Time。
類似的,在iPhone OS下的Quartz 2D也能與其它的圖像和動畫技術相結合——Core Animation,OpenGL ES,以及UIKit類。
1. 頁面(Page)
Quartz 2D使用畫筆模型——每一個繪圖操作在一塊輸出畫布上進行一層繪制(paint),這個畫布就叫做頁面。繪制在頁面上的東西無法改動,除非修改該頁面。
下圖顯示了“后來者居上”的遮蓋順序。頁面可以是一張真正的紙(如果輸出設備是打印機);可以是一張虛擬的紙(如果輸出設備是pdf);甚至可以是一幅位圖。
2. 繪制目標:圖形內容(Graphics Context)
圖形內容是一個復雜的數據類型(CGContextRef),用于封裝Quartz用于繪圖的信息。這些信息包括了繪圖參數以及頁面上的繪圖的代表。
同一幅畫可以繪制到不同的設備上,而只需要改變圖形內容的,無需改變Quartz繪制順序。你不需要自行針對設備進行計算——Quartz會替你完成這一切。
?
3. Quartz 2D的模糊數據類型(Opaque Data Type)
在圖形內容之外,Quartz 2D還定義了一系列模糊數據類型,均以CG為前綴。其中三種數據類型如下圖所示。
?
4. 圖形狀態(Graphics States)
Quartz 2D根據當前的圖形狀態來修改繪圖結果。例如,當你調用函數來填充顏色時,你同時也就修改了儲存在圖形狀態中的數值。其它常用的圖形狀態顏色包括線寬,當前位置,以及字體大小。
圖形內容包含了一個堆棧,儲存了圖形狀態。初建圖形內容時,此堆棧為空。圖形狀態可以通過函數 CGContextSaveGState 和 CGContextRestoreGState 來保存和恢復。
5.Quartz 2D坐標
Quartz 2D的坐標體系如下圖所示,原點在左下方。
考慮到不同的設備有著不同的圖像能力,因此圖形的位置和大小必需獨立于設備來定義——這由當前變換矩陣(CTM)來完成。
6. 內存管理
幾個簡單實用的準則:
6.1 如果你創建或復制一個對象,該對象的retain值會加一;因此你也必需釋放它。具體反映在帶有Create或Copy的函數名當中。
6.2 反之,如果函數名中沒有Create或Copy,你就不需要釋放。
6.3 如果你不擁有一個對象但需要使用它,你可以retain之后再釋放
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
