ui进阶第五天,绘图的基本介绍

// --- 关键方法


// 获取上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();


// 创建可变路径(c)

CGMutablePathRef path = CGPathCreateMutable();


// 把路径放在上下文当中

CGContextAddPath(ctx, path);


// 创建路径对象(oc)

UIBezierPath* path = [UIBezierPath bezierPath];


// 渲染

CGContextStrokePath(ctx);


// --- 绘图的步骤


// 1.获取图形上下文


// 2.拼接路径 同时 添加到上下文当中


// 3.渲染


// --- 绘图的方式


// 5


// 1.c 直接在上下文当中去拼接路径

// 2.c 先拼接路径 再把路径添加到上下文当中

// 3.c + oc 基本等同于第二种 ocpath 转化成 CGPath

// 4.c + oc CGPath 转化成 ocpath

// 5.oc 声明path对象 拼接路径 渲染


// --- 关于drawrect


// 1.为什么代码要写在drawrect里面

// 因为只有在这个方法当中才能获取正确的上下文


// 2.drawrect方法中rect参数的含义是什么

// rect是当前viewbounds


// 3.drawrect什么时候调用

// 系统自动调用

// (1)当这个view第一次显示的时候调用

// (2)当重绘的时候调用


// 4.如何重绘

// viewsetNeedsDisplay方法

// viewsetNeedsDisplayInRect方法  rect参数是刷新指定的区域


// 5.为什么drawRect不要手动调用

// 因为系统调的时候是会确保创建view的上下文

// 手动调用的时候可能获取不到


// --- 绘图的样式

// 设置线宽

CGContextSetLineWidth(ctx, 20);

// 设置连接处的样式

CGContextSetLineJoin(ctx, kCGLineJoinRound);

// 设置头尾的样式

CGContextSetLineCap(ctx, kCGLineCapRound);


// 设置线的宽度

[path setLineWidth:30];


//       kCGLineJoinMiter, // 默认的效果

//       kCGLineJoinRound, // 圆角

//       kCGLineJoinBevel // 切角

// 设置连接处的样式

[path setLineJoinStyle:kCGLineJoinBevel];


//       kCGLineCapButt, // 默认

//       kCGLineCapRound, // 圆角

//       kCGLineCapSquare

// 设置头尾的样式

[path setLineCapStyle:kCGLineCapButt];


// --- 绘图的渲染的方式


// oc

[path stroke];

[path fill];


// c

// CGContextDrawPath(ctx, kCGPathStroke); <==> CGContextStrokePath(ctx);

// CGContextDrawPath(ctx, kCGPathFill); <==> CGContextFillPath(ctx);


// 既描边又填充

// c:

CGContextDrawPath(ctx, kCGPathFillStroke);

// oc: 两句话都执行

[path stroke];

[path fill];


// --- 奇偶填充规则


// c

CGContextDrawPath(ctx, kCGPathEOFill);


// oc

path.usesEvenOddFillRule = YES;


// 奇填偶不填


// --- 非零绕数


// 默认填充模式: nonzero winding number rule(非零绕数规则)从左到右跨过, +1。从右到左跨过, -1。最后如果为0, 那么不填充, 否则填充


// 验证 取区域中 任意一个点 拉一条射线 看图形与射线的交叉点 是从左往右还是从右往左


// --- 饼图


// 随机颜色

- (UIColor*)randomColor

{

    CGFloat r = arc4random() % 256 / 255.0;

    CGFloat g = arc4random() % 256 / 255.0;

    CGFloat b = arc4random() % 256 / 255.0;


    return [UIColor colorWithRed:r green:g blue:b alpha:1];

}


// 比较最小的值

MIN(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5)


// 画扇形的时候 记得往圆心 连一条线


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值