Quartz2D总结

天了噜,脑子完全懵了,最起码说出来个上下文啊,连这个都给忘了,特此总结一下,并以此缅怀这次面试

Quartz2D的API来自于Core Graphics(这就是为什么CGContextRef是以CG开头),需要导入CoreGraphics(Xcode6之后不需要导入了)

图形上下文:是一个CGContextRef类型的数据

图形上下文的作用:

1.保存绘图信息、绘图状态

2.决定绘制的输出目标(绘制到什么地方去)(输出目标可以是PDF文件、Bitmap或者显示器的窗口上

Bitmap Graphics Context
PDF Graphics Context
Window Graphics Context
Layer Graphics Context
Printer Graphics Context

自己画一个view
步骤:
1.新建一个类,继承自UIView
2.实现- (void)drawRect:(CGRect)rect方法,并在此方法中取得当前view的图形上下文
3.创建自己的绘制path,并根据path来绘制图形
4.利用图形上下文将绘制的所有内容渲染显示到view上面

当然,比如Bitmap的图形上下文就不必在- (void)drawRect:(CGRect)rect里面了,直接创建一个就可:
// 创建一个bitmap上下文
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 200), NO, 0);
     // 获取bitmap上下文
    CGContextRef ctr = UIGraphicsGetCurrentContext();
    // 画圆
    CGContextAddEllipseInRect(ctr, CGRectMake(50, 50, 100, 100));
    // 渲染
    CGContextStrokePath(ctr);
 // 从上下文获取画出的图片
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

    UIImageView *imageView = [[UIImageView alloc] initWithImage:img];
    CGRect frame = imageView.frame;
    frame.origin = CGPointMake(50, 50);
    imageView.frame = frame;
    [self.view addSubview:imageView];

待续。。。

部分参考自:http://www.jianshu.com/p/eecffec3b7af



原文地址:https://www.cnblogs.com/hyuganatsu/p/Quartz2D.html