澳门皇冠金沙网站-澳门皇冠844网站

热门关键词: 澳门皇冠金沙网站,澳门皇冠844网站

上下文状态栈与上下文的矩阵操作,画一些简单

本身写那一个纯粹是为着铭记ios中繁琐的卡通,一个饶有的路线,前一年龄了,记不住了。

入门篇demo中以3种办法绘制一条直线
注意:绘制图形的方法要写在控件类中的draw(_ rect: CGRect) 方法中,而不是调控器中

左右文状态栈

上下文状态栈为内部存储器中的一块区域,它用来保存前上下文当的状态.
咱们获得的图层上下文个中其实两块区域,三个是寄放加多的渠道,二个是用来保存客商设置的场地,
那几个意况富含线条的颜料,线宽等.
当大家把上下文的内容渲染到View上面的时候,
它会自动将安装的具有上下文状态运转到保存的路径方面显示到View上面.

固然想要有两种景观,能够先把门路渲染到View上边,
再从新扩大加路线.加多完路线之后,重新安装上下文的状态.
再把新装置的上下文状态渲染到View下边.

我们能够选拔上下文状态栈的法门,在安装情况在此之前,把在此以前的状态保存到上下文状态栈里面.
下贰回想要再选择在此以前的动静时, 能够从上下文状态在那之中收取以前封存的左右文状态.

1.怎么着把上下文状态保存到上下文状态栈?
CGContextSaveGState(ctx);
2.什么从上下文状态栈中收取上下文状态?
CGContextRestoreGState(ctx);

制图的步子: 1.拿走上下文 2.创设路线 3.把门路增添到上下文 4.渲染上下文

<h5>落成绘图的进度</h5>

上下文的矩阵

上下文的矩阵操作实际正是修改上下文的形变,
要害有以下三种

平移
CGContextTranslateCTM(ctx, 100, 100);
旋转
CGContextRotateCTM(ctx, M_2_PI);
缩放
CGContextScaleCTM(ctx, 0.5, 0.5);
留心:上下文操作必需得要在累加路径此前去设置

 1.获取图形上下文 // 目前我们所用的上下文都是以UIGraphics // CGContextRef Ref:引用 CG:目前使用到的类型和函数 一般都是CG开头 CoreGraphics // CGContextRef 相当于画布 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.描述路径 // 创建路径 // 路径相当于我们的画笔 CGMutablePathRef path = CGPathCreateMutable(); // 设置起点 // path:给哪个路径设置起点 CGPathMoveToPoint(path, NULL, 50, 50); // 添加一根线到某个点 CGPathAddLineToPoint(path, NULL, 200, 200); // 3.把路径添加到上下文 CGContextAddPath(ctx, path); // 4.渲染上下文 CGContextStrokePath;

 //系统为你默认封装了一个路径在里面 // 获取上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 描述路径 // 设置起点 CGContextMoveToPoint(ctx, 50, 50); CGContextAddLineToPoint(ctx, 200, 200); // 渲染上下文 CGContextStrokePath;

制图好图形 -> 保存在上下文中 -> 展现到指标中

个人感到那是最灵敏的,我相比较喜欢的不二等秘书技

<h6>格局1:最完全的写法
①成立上下文 ②陈说图形路径③封存路径到上下文④绘图图形
</h6>

 // UIKit已经封装了一些绘图的功能 // 贝瑟尔路径 // 创建路径 UIBezierPath *path = [UIBezierPath bezierPath]; // 设置起点 [path moveToPoint:CGPointMake]; // 添加一根线到某个点 [path addLineToPoint:CGPointMake]; // 绘制路径 [path stroke];

 // 获取上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 描述路径 //起点 CGContextMoveToPoint(ctx, 50, 50); CGContextAddLineToPoint(ctx, 100, 50); // 设置起点 CGContextMoveToPoint(ctx, 80, 60); // 默认下一根线的起点就是上一根线终点 CGContextAddLineToPoint(ctx, 100, 200); // 设置绘图状态,一定要在渲染之前 // 颜色 [[UIColor redColor] setStroke]; // 线宽 CGContextSetLineWidth; // 设置连接样式 CGContextSetLineJoin(ctx, kCGLineJoinBevel); // 设置顶角样式 CGContextSetLineCap(ctx, kCGLineCapRound); // 渲染上下文 CGContextStrokePath;

<pre>
// 上下文
let ctx = UIGraphicsGetCurrentContext()

本文由澳门皇冠金沙网站发布于编辑程序,转载请注明出处:上下文状态栈与上下文的矩阵操作,画一些简单