//************************************************************************************************************ 14 图形上下文
// 2.图形上下文(Graphics Context) :是一个CGContextRef类型的数据
// 作用 ://保存绘图信息,绘图状态 //决定绘制的输出目标 (绘制到哪个地方去 ?PDF)
// (输出目标可以是PDF文件,Bitmap(绘图)或者显示器的窗口上)
// 相同的一套绘图序列,指定不同的图形上下文, 就可将相同的图像绘图到不同的目标上
// 绘制好的图形 保存在 图形上下文 显示在 输出目标
(1)图形上下文栈(栈stack) 作用: 恢复最初的绘图状态
1.将当前的图形上下文的状态copy一份到栈。
2.上下文的什么状态呢? 颜色 ,线框,这些都是上下文状态
//保存一个当前上下文的绘图状态到一个栈里面
//G代理Graphics
CGContextSaveGState(ctx);
//恢复当前上下文的状态
CGContextRestoreGState(ctx);
#warining 恢复状态不能随便用,保存了多少次的绘图状态,就可以调用多少
#pragma mark 剪裁图片 (正常图片 剪裁成 圆角图片)
步骤:(1)自定义一个CircleImageView控件,中drawRect 中, 获取上下文,往上下文中添加一张图片
(2)调用CGContextClip的方法,剪裁路径之外多余的部分
(3)自定义的控制中,添加一个imageName 属性,然后回到drawrect 方法画图
(4)画圆的边框,使用CGContextAddEllipseInRect 添加圆的路径,并使用CGContextStrokePath 画空心圆
// 1.实现裁剪图片显圆形 并显示
// 1.1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 1.2.指定圆的路径,并圆外面多余的剪切掉[CGContextClip]
#warning CGContextClip方法要记住:把圆之外的剪切掉了。
// 定义图片的Rect
CGRect imageRect = CGRectMake(0, 0, rect.size.width, rect.size.height);
CGContextAddEllipseInRect(ctx, imageRect);
//把圆之外的剪切掉了。
CGContextClip(ctx);
// 1.3.就把图片显示在UIView
UIImage *image = [UIImage imageNamed:self.imageName];
[image drawInRect:imageRect];
// 2.添加一个圆的边框
//线宽
CGContextSetLineWidth(ctx, self.borderWidth);
//设置边框的颜色
[self.borderColor set];
CGContextAddEllipseInRect(ctx, imageRect);
CGContextStrokePath(ctx);
}
IOS学习之——图形上下文
最新推荐文章于 2021-11-10 11:58:38 发布