Function
Quartz2D的functio n太多,只至把用過的稍微記一下
Quartz2D的functio n太多,只至把用過的稍微記一下
- CGContextRef CGContext,一個ObjectiveC製作繪圖的資料型態(參照)
- CGLayerRef
- UIGraphicsGetCurrentContext
- (CGContextRef) CGBitmapContextCreate 產生bitmap形態的ContextRef
- (CGGradientRef) CGGradientCreateWithColorComponents 產生一個漸層填色
- CGContextDrawLinearGradient 套用一個漸層的繪圖填色
- CGColorSpaceCreateDeviceGray 產生裝置支援的灰階色域(類似色票)
- CGColorSpaceCreateDeviceRGB 產生裝置支援的RGB色域
- CGBitmapContextCreateImage 將CGContextRef 轉成CGImageRef
- CGContextClipToMask 對CGContextRef套用CGImageRef格式的mask
- CGContextScaleCTM 延展座標
- CGContextTranslateCTM 位移座標
位移原點作標
CGContextSaveGState 與 CGContextRestoreGState,花了一點時間將CGContextGSave與CGContextRestoreGState弄懂,CGContextRef是一個線性的繪圖資料型態,他儲存產生繪圖的所有需要資訊。
一般而言,可以從取得bitmap、layer、window、pdf等透過CoreGraphics或者UIKit的一些
function取得CGContextRef,如CGBitmapContextCreate、 UIGraphicsGetCurrentContext。取得CGContextRef之後,就可以對他進行繪圖,而所有的繪圖資料都是透過一些CG的function將context一層一層的覆蓋下去,所以我們可以想成每次的修改,都是針對目前的Status進行修改。因此,原本的圖形繪圖資料,經function處理後,產生新的status,舊的圖形資料就被蓋下去
由於是一層一層蓋下去的,每蓋一層,就是一個新的Status,如同油畫一樣,所以舊的資料就會被蓋到下層無法取得
因此有兩個function為CGContextSaveGState 與 CGContextRestoreGState
CGContextSaveGState 與 CGContextRestoreGState,花了一點時間將CGContextGSave與CGContextRestoreGState弄懂,CGContextRef是一個線性的繪圖資料型態,他儲存產生繪圖的所有需要資訊。
一般而言,可以從取得bitmap、layer、window、pdf等透過CoreGraphics或者UIKit的一些
function取得CGContextRef,如CGBitmapContextCreate、 UIGraphicsGetCurrentContext。取得CGContextRef之後,就可以對他進行繪圖,而所有的繪圖資料都是透過一些CG的function將context一層一層的覆蓋下去,所以我們可以想成每次的修改,都是針對目前的Status進行修改。因此,原本的圖形繪圖資料,經function處理後,產生新的status,舊的圖形資料就被蓋下去
由於是一層一層蓋下去的,每蓋一層,就是一個新的Status,如同油畫一樣,所以舊的資料就會被蓋到下層無法取得
因此有兩個function為CGContextSaveGState 與 CGContextRestoreGState
CGContextSaveGState,將目前的STATUS push一個copy到一個Stack,
之後的修改將不會動到此STATUS,有點類似紀錄點的意思
CGContextRestoreGState,從Stack pop一個Status回來,原先的status之後的修改將會被捨棄掉,可以這樣想:
A--->B--->save--->C--->D--->E--->F--->restore--->B
但並非所有修改都支援status的save,只有下表的CoreGraphic 參數支援status的save。
注意,下表提供的path,CGContextStrokePath、CGContextStrokeRect之類的動作,是不支援Status Save的,但先前的moveTo、lineTo、color才支援Status Save
https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html#//apple_ref/doc/uid/TP30001066-CH202-CJBIBHHB
Creating Affine Transforms
之後的修改將不會動到此STATUS,有點類似紀錄點的意思
CGContextRestoreGState,從Stack pop一個Status回來,原先的status之後的修改將會被捨棄掉,可以這樣想:
A--->B--->save--->C--->D--->E--->F--->restore--->B
但並非所有修改都支援status的save,只有下表的CoreGraphic 參數支援status的save。
注意,下表提供的path,CGContextStrokePath、CGContextStrokeRect之類的動作,是不支援Status Save的,但先前的moveTo、lineTo、color才支援Status Save
https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html#//apple_ref/doc/uid/TP30001066-CH202-CJBIBHHB
Creating Affine Transforms
ref:

沒有留言:
張貼留言