1,系統提供的幾種圖形上下文atom
Quartz2D提供了一下一種類型的Graphics Context(圖形上下文):spa
Bitmap Graphics Context(圖片類型的圖形上下文)orm
PDF Graphics Context對象
Window Graphics Context圖片
Layer Graphics Context(UI控件圖形上下文)string
關於圖片類型的上下文it
1>圖片類型的上下文須要手動建立,大小也須要手動來傳io
2>圖片類型的上下文須要開啓和關閉ast
3>使用圖片類型上下文的一個好處是能夠獲取一個image對象 而且保存到沙盒或者相冊當中object
4>圖片類型的上下文能夠在任何地方使用
2,圖形上下文的開啓和關閉
a.圖形上下文的兩種開啓方法:
1,UIGraphicsBeginImageContext(CGSize size);
2,UIGraphicsBeginImageContextWithOptions(CGSize size,BOOL opaque,CGFloat scale);
通常狀況下咱們使用的都是第二種方法
b.圖形上下文的關閉方法
UIGraphicsEndImageContext();
c.參數解析:
CGSize size是開啓一個BitMap類型的圖形上下文的大小
BOOL opaque 是指BitMap類型的圖形上下文是否透明(NO表示透明)
CGFloat scale 是指圖形上下文的縮放比(通常狀況填0便可)
若是CGFloat scale = 0,表示默認爲設備的縮放比例,IPhone6默認爲2,IPhone6plus默認爲3;CGFloat scale = 0等價於CGFloat scale = [UIScreen mainScreen].scale(當前設備縮放比);
d.兩種開啓方法的區別
UIGraphicsBeginImageContext( CGSizeMake(200,200) );
該方法輸出的圖片的像素是200*200
UIGraphicsBeginImageContextWithOptions(CGSizeMake(200,200),YES,3);
該方法輸出的圖片像素則是(200*3) * (200*3)即600*600
3,Bitmap類型圖形上下文Demo
//開啓圖形上下文
UIGraphicsBeginImageContextWithOptions(CGSizeMake(200,200),YES,0);
//獲取當前圖形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//繪製圓
CGContextAddArc(ctx, 100, 100, 80, 0, 2 * M_PI);
//渲染
CGContextStrokePath(ctx);
//從圖形上下文中獲取image對象
UIImage * image = UIGraphicsGetImageFormCurrentContext();
//獲取doc的目錄
NSString * path = [[NSSearchPathForDirectoresInDomains(NSDocument Directory,NSUserDomainMask,Yes) lastobject] stringByAppendingPathComponent:@"xx.jpg"];
//把image對象轉化成data的對象
NSData * data = UIImageJPGRepresentation(iimage);
//經過data對象調用write to file的方法寫入到沙盒當中
[data writeToFile:path atomically:YES];