iOS開發-UI高階 Quartz 2D繪圖
1、Quartz 2D是一個二維圖形繪製引擎
· Quartz 2DAPI可以實現許多功能,如基於路徑的繪圖、透明度、陰影、顏色管理、反鋸齒、PDF文件生成和PDF後設資料訪問
· Quartz 2DAPI是Core Graphics框架的一部分
2、Core Graphics
· Core Graphic框架是一組基於C的API,可以用於一切繪圖操作
· 因為UIKit依賴於Core Graphics,所以當引入<UIKit/UIKit.h>時,Core Graphics框架會被自動引入
· UIKit內部封裝了Core Graphics的一些API,可以快速生成通用的介面元素
3、Graphics Context圖形上下文
· Graphics Context是一個資料型別(CGContextRef),封裝了Quartz繪製影像 到輸出裝置的資訊
· Quartz中所有的物件都是繪製到一個Graphics Context中
4、利用Quartz 2D繪製UIView
注意:1. 如果使用UIView繪圖,只能在drawRect:方法中獲取相應的CGContextRef 並繪圖。而在其他方法中獲取的CGContextRef不能用於繪圖
2. 重繪時應該呼叫setNeedsDisplay,而不能直接呼叫 drawRect:,setNeedsDisplay會自動呼叫drawRect:
· Quartz 2DAPI可以實現許多功能,如基於路徑的繪圖、透明度、陰影、顏色管理、反鋸齒、PDF文件生成和PDF後設資料訪問
· Quartz 2DAPI是Core Graphics框架的一部分
2、Core Graphics
· Core Graphic框架是一組基於C的API,可以用於一切繪圖操作
· 因為UIKit依賴於Core Graphics,所以當引入<UIKit/UIKit.h>時,Core Graphics框架會被自動引入
· UIKit內部封裝了Core Graphics的一些API,可以快速生成通用的介面元素
3、Graphics Context圖形上下文
· Graphics Context是一個資料型別(CGContextRef),封裝了Quartz繪製影像 到輸出裝置的資訊
· Quartz中所有的物件都是繪製到一個Graphics Context中
4、利用Quartz 2D繪製UIView
在UIView子類中重寫drawRect:
如以下程式碼是利用Quartz 2D繪製線條的簡單示例,繪製步驟一般為:
1. 獲取上下文
2. 建立繪製路徑
3. 設定繪製圖形屬性
4. 將路徑新增到上下文中
5. 渲染上下文
<strong><span style="font-size:14px;">-(void)drawRect:(CGRect)rect{
// 獲取上下文
CGContextRef context = UIGraphicsGetCurrentContext();
[self drawLine:context];
}
-(void)drawLine:(CGContextRef)context{
// 建立路徑
CGMutablePathRef path = CGPathCreateMutable();
// 設定起點
CGPathMoveToPoint(path, NULL, 50, 50);
// 設定目標點
CGPathAddLineToPoint(path, NULL, 200, 200);
// 設定連線線條
CGPathAddLineToPoint(path, NULL, 50, 200);
// 關閉路徑
CGPathCloseSubpath(path);
// 將路徑新增到上下文
CGContextAddPath(context, path);
// 設定填充顏色
CGContextSetRGBFillColor(context, 180/255.0, 120/255.0, 110/255.0, 1);
// 設定線條顏色
CGContextSetRGBStrokeColor(context, 50/255.0, 60/255.0, 65/255.0, 1);
// 設定線條寬度
CGContextSetLineWidth(context, 10);
// 渲染路徑
CGContextDrawPath(context, kCGPathFillStroke);
// 釋放路徑
CGPathRelease(path);
}
</span></strong>
執行結果:
注意:1. 如果使用UIView繪圖,只能在drawRect:方法中獲取相應的CGContextRef 並繪圖。而在其他方法中獲取的CGContextRef不能用於繪圖
2. 重繪時應該呼叫setNeedsDisplay,而不能直接呼叫 drawRect:,setNeedsDisplay會自動呼叫drawRect:
相關文章
- ios開發-UI高階 HTTP協議iOSUIHTTP協議
- iOS開發——Core Graphics繪圖iOS繪圖
- ios-UI高階 GCD佇列組合成圖片iOSUIGC佇列
- Quartz 2Dquartz
- Canvas中的繪圖師講解與實戰——Android高階UICanvas繪圖AndroidUI
- 玩轉iOS開發:iOS 11 新特性《高階拖放》iOS
- iOS UI繪製原理iOSUI
- ios-UI高階 GCD的相關設定iOSUIGC
- iOS繪圖iOS繪圖
- 靈魂畫師,Android繪製流程——Android高階UIAndroidUI
- 高階圖形繪製軟體的原理猜想
- ios 開發UI篇—UITextViewiOSUITextView
- iOS UI 進階 (一)iOSUI
- ios-UI高階 多執行緒的互斥解決iOSUI執行緒
- iOS開發UI篇--一個支援圖文混排的ActionSheetiOSUI
- ios開發UI篇--UILabeliOSUI
- .NET Framework 高階開發Framework
- 高階Web開發教程Web
- SAP BTE高階開發
- 想學 iOS 開發高階一點的東西,從何開始?iOS
- Android UI 繪圖基礎AndroidUI繪圖
- Android 5.0+ 高階動畫開發系列 向量圖動畫Android動畫
- iOS核心動畫高階技術(十五) 圖層效能iOS動畫
- ios-UI高階多執行緒 GCD實現單例模式iOSUI執行緒GC單例模式
- iOS開發UI篇--iOS動畫(Core Animation)總結iOSUI動畫
- 【iOS開發進階】-RunTimeiOS
- iOS 2D 畫圖 和 UIBezierPathiOSUI
- OpenCV (iOS)基本繪圖(5)OpenCViOS繪圖
- iOS開發UI篇--UICollectionView初步入門iOSUIView
- SAP UI5 應用開發教程之六十 - SAP UI5 地圖控制元件的一些高階用法試讀版UI地圖控制元件
- 14天學會安卓開發(第五天)高階UI控制元件安卓UI控制元件
- Android高階UI系列(2)-DecorViewAndroidUIView
- Java高階開發工程師Java工程師
- Quartz.NET整合UI版quartzUI
- 資料庫開發(21)高階應用開發資料庫
- iOS Quartz筆記iOSquartz筆記
- 平面設計2D CAD 繪圖工具CADintosh X繪圖
- 《iOS核心動畫高階技巧》筆記(四) - 專用圖層iOS動畫筆記