您的位置:首页 > 移动开发 > IOS开发

ios图形上下文CGContext

2015-10-08 20:38 381 查看
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. 渲染图片(将上下文中绘制的图片显示到屏幕)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: