ios图形上下文CGContext

释放双眼,带上耳机,听听看~!

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);//绘画半圆
    [UIColor yellowColor]; //半圆的颜色
    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. 渲染图片(将上下文中绘制的图片显示到屏幕)

 

人已赞赏
iOS文章

iOS locationInView和translationInView的区别

2020-2-13 9:21:00

iOS文章

iOS开发权限设置

2020-2-13 11:19:45

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索