ios图形上下文CGContext

CGContext是iOS中用于图形绘制的重要概念,常被比喻为画家的画布。在自定义UIView的drawRect方法、CALayer的drawLayer回调以及图像处理时,都需要使用图形上下文进行绘制。在实际操作中,包括获取图形上下文、在上下文中绘制图形以及渲染图片到屏幕三个步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. 渲染图片(将上下文中绘制的图片显示到屏幕)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值