繪制
- Quartz 2D 是一個
二維繪圖
引擎,同時支持iOS 和 Mac
系統(tǒng) - Quartz 2D 能完成的工作:
1状原、繪制圖形: 線條、三角形臭挽、矩形、圓和弧等咬腕;
2欢峰、繪制文字;
3涨共、繪制纽帖,生成圖片(圖像);
4举反、讀取懊直,生成PDF;
5火鼻、截圖室囊,裁剪圖片;
6魁索、自定義 UI 控件(普通的 UI 控件無法使用 UIkit 框架實現融撞,可以使用 Quartz 2D 技術將控件內部的結構畫出來,自定義控件的樣子粗蔚,例如五角星??)尝偎。
圖像上下文:“畫板”
- 圖形上下文(Graphics Context): 是一個 CGContextRef 類型的數據;
- 圖行上下文的作用:
1鹏控、保存繪制信息致扯,繪圖狀態(tài);
2当辐、決定繪制的輸出目標(繪制到什么地方去抖僵?):輸出目標可以是PDF文件、Bitmap(位圖)或者顯示器的窗口上缘揪;
3耍群、相同的一套繪圖序列,指定不同的 Graphics Context寺晌,就可將想吐的圖像繪制到不同的目標世吨。
繪制流程
圖形上下文類型
- Bitmap Graphics Context
- PDF Graphics Context
- Window Graphics Context
- Layer Graphics Context
自定義 View
- 新建一個類澡刹,繼承自 UIview
- 實現
- (void)drawRect:(CGRect)rect
方法(只有在這個方法里呻征,才能獲取圖像上下文,和View 相關聯(lián))罢浇,然后在這個方法中:
1陆赋、取得跟當前 view 相關聯(lián)的圖像上下文沐祷;
2、繪制相應的圖形內容攒岛;
3赖临、利用圖形上下文將繪制的所有內容渲染顯示到 view 上面
繪制效果
繪制直線
方法一:開發(fā)中不常用
//1、獲取圖像的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 2灾锯、繪制描述路徑
CGMutablePathRef path = CGPathCreateMutable();
// 3兢榨、繪制路徑的起點
CGPathMoveToPoint(path, NULL, 50, 50);
CGPathAddLineToPoint(path, NULL, 200, 200);
//把路徑添加到上下文
CGContextAddPath(ctx, path);
//4、 渲染上下文
CGContextStrokePath(ctx);
方法二:
// 獲取上下文 本身封裝的方法顺饮,路徑封裝了
CGContextRef ctx = UIGraphicsGetCurrentContext();
//描述路徑
//添加起點
CGContextMoveToPoint(ctx, 50, 50);
//添加直線
CGContextAddLineToPoint(ctx, 200, 200);
//渲染上下文
CGContextStrokePath(ctx);
方法三:開發(fā)建議使用
// UIkit 自己封裝的繪制功能 貝塞爾路徑繪制
// 創(chuàng)建路徑
UIBezierPath *path = [UIBezierPath bezierPath];
// 路徑起點
[path moveToPoint:CGPointMake(50, 50)];
// 添加線到
[path addLineToPoint:CGPointMake(200, 200)];
// 渲染路徑
[path stroke];