http://www.cnblogs.com/appDev/archive/2011/07/08/2100607.html
iOS中的圖形和繪製
1、iOS支援OpenGL ES和Quartz/UIKit/CoreAnimation繪製介面。UIKit繪製必須在主線程中完成。
2、Quartz支援基於路徑的繪製,反走樣,填充,映像,上色,座標變換,pdf繪製顯示解析等功能。
3、UIKit支援線條繪製、映像和顏色操作。
4、Core Animation支援動畫繪製。
5、View的使用DrawRect繪製,以下行為會觸發:
- View的移動和遮擋。
- View的隱藏和顯示。
- 拖動View。
- 顯示調用setNeedDisplay和setNeedDispalyRect
6、UIKit左上方為原點,右下角為終點。CoreAnimation坐下角為原點,右上方為終點。使用CGContextRotateCTM、CGContextScaleCTM、CGContextTranslateCTM來變換矩陣,或者直接使用CGAffineTransform設定變換矩陣。
7、CGContext繪製上下文,對於Bitmap和PDF,可以建立不同的context類型。
- 變換矩陣
- 裁剪範圍
- 線條繪製屬性
- 曲線精度
- 反走樣
- 填充屬性,描邊屬性
- 半透明屬性
- 色彩空間
- 文字
- 顏色混合模式
8、使用UIGraphicsGetCurrentContext來擷取當前的CGContext。
9、UIGraphicsBeginImageContextWithOptions和UIGraphicsEndImageContext用來包含映像繪製的代碼。
UIGraphicsBeginPDFContextToFile(ToData)和UIGraphicsEndPDFContext用來包含PDF繪製的代碼。
10、Path繪製,即向量繪製。推薦使用UIBezierPath,其次是CGPath。
11、翻轉螢幕變換:
CGContextTranslateCTM(graphicsContext, 0.0, drawingRect.size.height); |
CGContextScaleCTM(graphicsContext, 1.0, -1.0); |
12、Point通常等於Pixel,但是可以指定一個Point對應多個Pixel。
13、使用UIColor坐色彩空間變換。
14、繪製效能:
- 最小化繪製調用
- 盡量使用不透明的View
- 在卷屏時重用View和表格
- 在卷屏時可以不清空上次繪製結果
- 減少繪製狀態切換。