画布:
CGContextSaveGState(ctx); //保存画布上的绘图信息
CGContextRestoreGState(ctx); //清空画布上的绘图信息
CGContextClip(ctx);//指定上下文中可以显示内容的范围,需要在绘制内容前调用
渲染
CGContextStrokePath(ctx); //渲染,空心的
CGContextFillPath(ctx); //渲染,实心的,但线条无法渲染为实心
绘制对象:
- NSString、UIColor、UIImage、UIBreizePath等UIKit框架对象
<pre>
[str drawAtPoint:CGPointMake(10, 10) withAttributes:md]; //绘制文字
[str drawInRect:CGRectMake(50, 50, 100, 100) withAttributes:nil]; //绘制文字
</pre><pre>
[image drawInRect:CGRectMake(0, 0, 200, 200)]; //绘制图片,拉伸原有图片
[image drawAtPoint:CGPointMake(100, 100)]; //绘制图片
[image drawAsPatternInRect:CGRectMake(0, 0, 320, 480)]; //绘制图片,平铺小图
</pre><pre>
[aView.layer renderInContext:ctx]; //绘制视图内容
</pre> - Quarts2D绘图对象
<pre><pre>
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)); //画椭圆
</pre><pre>
CGMutablePathRef path=CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 20, 20);
CGPathAddLineToPoint(path, NULL, 200, 300);
CGContextAddPath(ctx, path);
CGPathRelease(path);
CFRelease(path);
</pre></pre><pre>
矩阵操作:
CGContextRotateCTM(ctx, M_PI_4); //旋转是对整个layer旋转的。先旋转再画图
CGContextScaleCTM(ctx, 0.5, 1.5); //缩放
CGContextTranslateCTM(ctx, 50, 100); //平移
</pre>
绘图状态
<pre>
CGContextSetLineWidth(ctx, 12); //线条的宽度
CGContextSetLineCap(ctx,kCGLineCapRound); //线条起点和终点的样式为圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound); //线条的转角的样式为圆角
</pre><pre>
[[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);//绘图的颜色,设置实心
</pre>
图片处理:
圆形处理:设置context为指定的圆形,然后将图片绘制到context上即可。
动画:
调用setNeedsLayout就可以刷新;