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:
相關文章
- Canvas中的繪圖師講解與實戰——Android高階UICanvas繪圖AndroidUI
- iOS UI繪製原理iOSUI
- 玩轉iOS開發:iOS 11 新特性《高階拖放》iOS
- 靈魂畫師,Android繪製流程——Android高階UIAndroidUI
- iOS高階開發者面試必過技巧iOS面試
- ios 開發UI篇—UITextViewiOSUITextView
- 高階圖形繪製軟體的原理猜想
- iOS開發UI篇--一個支援圖文混排的ActionSheetiOSUI
- 【iOS開發進階】-RunTimeiOS
- 想學 iOS 開發高階一點的東西,從何開始?iOS
- 平面設計2D CAD 繪圖工具CADintosh X繪圖
- iOS開發UI篇--iOS動畫(Core Animation)總結iOSUI動畫
- iOS開發UI篇--UICollectionView初步入門iOSUIView
- iOS開發-圖片UIImageiOSUI
- Quartz.NET整合UI版quartzUI
- SAP UI5 應用開發教程之六十 - SAP UI5 地圖控制元件的一些高階用法試讀版UI地圖控制元件
- iOS股票K線圖、分時圖繪製iOS
- iOS開發_繪製圓角矩形虛線環iOS
- Sketch 向量繪圖UI設計軟體繪圖UI
- Quartz 2D程式設計指南 (一) —— 簡介(一)quartz程式設計
- 繪圖黑科技—輕鬆搭建“真孿生”2D場景繪圖
- 招聘:PHP高階開發工程師PHP工程師
- Android高階開發突破瓶頸Android
- iOS開發高階工程師,為什麼Bat面試官偏偏看上了我!iOS工程師BAT面試
- iOS開發-Masonry約束寬高比iOS
- Sketch for mac 向量繪圖UI設計軟體Mac繪圖UI
- Sketch for mac(向量繪圖UI設計軟體)Mac繪圖UI
- Sketch for mac向量繪圖UI設計軟體Mac繪圖UI
- Sketch mac(向量繪圖UI設計軟體)Mac繪圖UI
- 【iOS 開發】iOS 10.3 如何更換 app 圖示iOSAPP
- iOS 核心動畫高階技巧 - 1iOS動畫
- iOS使用Charts框架繪製折線圖iOS框架
- 現代 CSS 高階技巧,像 Canvas 一樣自由繪圖構建樣式!CSSCanvas繪圖
- iOS開發圖片格式選擇iOS
- iOS開發UI篇--仿射變(CGAffineTransform)使用小結iOSUIORM
- iOS開發UI篇--一個側滑選單SlidingMenuiOSUI
- 收藏,Python 開發中有哪些高階技巧?Python
- 智慧家居方向招聘高階前端開發前端
- Hive 高階應用開發示例(一)Hive