CGContext即图形上下文,一个很抽象名词,但理解之后觉得这个词总结的很精辟。
图形上下文:网上很多人将其形象的比作画家作画的画布,想要作画,就需要画布(喜欢的话也可以成为画纸),编程绘图也是一样的,想要绘画想要的效果,就首先的有画布,也就是图形上下文,然后通过驱动也硬件显示出来。
凡是说到图形上下文就涉及到自绘,图像处理,自定义uiview并重写drawRect时、CALayer回调drawLayer, 图像处理时都会用到。
1. uiview的drawRect,这种情况系统已经为我们创建了一个绘图上下文,我问使用就可以了
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext(); //获取上下文
CGContextAddArc(context, self.frame.size.width/2, self.frame.size.height, self.frame.size.width/2, 0.0, M_PI, 1);//绘画半圆
CGContextRef context = UIGraphicsGetCurrentContext(); //获取上下文
CGContextAddArc(context, self.frame.size.width/2, self.frame.size.height, self.frame.size.width/2, 0.0, M_PI, 1);//绘画半圆
[UIColor yellowColor]; //半圆的颜色
CGContextDrawPath(context, kCGPathFillStroke); //渲染图片
}
CGContextDrawPath(context, kCGPathFillStroke); //渲染图片
}
2. CALayer回调drawLayer ,系统同样为我们创建了一个绘图上下文
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{ CGContextAddEllipseInRect(ctx, CGRectMake(10, 10, 100, 100)); //在矩形(10, 10, 100, 100)中绘制一个圆 CGContextSetRGBFillColor(ctx, 1, 0, 0, 1); //设置圆的填充色 CGContextFillPath(ctx); //渲染圆 }
3.在
"ios图片压缩"一文中提到的图片尺寸的等比例缩放:,
这个比较特殊,需要自己创建图像上下文,因为这段代码在哪里都可以使用,所以系统不知道该怎么给我们创建,干脆就让我们自己创建好了。
CGSize size = CGSizeMake(100, 100);//压缩后的尺寸
UIGraphicsBeginImageContext(CGSizeMake(size.width, size.height)); //设置基于位图的上下文,并将其设为当前上下文
[image drawInRect:CGRectMake(0, 0, size.width, size.height)]; //将图片渲染到当前的上下文中
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); //获取当前上下文的图片
UIGraphicsEndImageContext(); //释放上下文
1. 获取图形上下文
2. 在上下文中绘制图形
3. 渲染图片(将上下文中绘制的图片显示到屏幕)