CoreGraphics绘图API

画布:

CGContextSaveGState(ctx); //保存画布上的绘图信息
CGContextRestoreGState(ctx); //清空画布上的绘图信息
CGContextClip(ctx);//指定上下文中可以显示内容的范围,需要在绘制内容前调用

渲染

CGContextStrokePath(ctx); //渲染,空心的
CGContextFillPath(ctx); //渲染,实心的,但线条无法渲染为实心

绘制对象:

  • NSString、UIColor、UIImage、UIBreizePath等UIKit框架对象

    [str drawAtPoint:CGPointMake(10, 10) withAttributes:md]; //绘制文字
    [str drawInRect:CGRectMake(50, 50, 100, 100) withAttributes:nil]; //绘制文字

    [image drawInRect:CGRectMake(0, 0, 200, 200)]; //绘制图片,拉伸原有图片
    [image drawAtPoint:CGPointMake(100, 100)]; //绘制图片
    [image drawAsPatternInRect:CGRectMake(0, 0, 320, 480)]; //绘制图片,平铺小图

    [aView.layer renderInContext:ctx]; //绘制视图内容
  • Quarts2D绘图对象

    CGContextMoveToPoint(ctx, 20, 100); //绘制线条,设置起点
    CGContextAddLineToPoint(ctx, 100, 320); //绘制线条,设置终点
    CGContextClosePath(ctx); //关闭线条起点和终点
    CGContextAddRect(ctx, CGRectMake(20, 20, 150, 100)); //画四边形
    CGContextAddArc(ctx, 100, 100, 50, 0, 2 * M_PI, 0); // 画圆、画圆弧
    CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 100, 230)); //画椭圆

    CGMutablePathRef path=CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, 20, 20);
    CGPathAddLineToPoint(path, NULL, 200, 300);
    CGContextAddPath(ctx, path);
    CGPathRelease(path);
    CFRelease(path);

    矩阵操作:
    CGContextRotateCTM(ctx, M_PI_4); //旋转是对整个layer旋转的。先旋转再画图
    CGContextScaleCTM(ctx, 0.5, 1.5); //缩放
    CGContextTranslateCTM(ctx, 50, 100); //平移

绘图状态


CGContextSetLineWidth(ctx, 12); //线条的宽度
CGContextSetLineCap(ctx,kCGLineCapRound); //线条起点和终点的样式为圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound); //线条的转角的样式为圆角

[[UIColor blueColor] setStroke]; //绘图的颜色,设置空心
[[UIColor purpleColor] setFill]; //绘图的颜色,设置实心
[[UIColor greenColor] set]; //绘图的颜色,同时设置了实心和空心
CGContextSetRGBStrokeColor(ctx, 1.0, 0, 0, 1.0);//绘图的颜色,设置空心
CGContextSetRGBFillColor(ctx, 1.0, 0, 0, 1.0);//绘图的颜色,设置实心

图片处理:

圆形处理:设置context为指定的圆形,然后将图片绘制到context上即可。

动画:
调用setNeedsLayout就可以刷新;

你可能感兴趣的:(CoreGraphics绘图API)