使用两种方法绘制直线。
绘图的一般步骤:
- 获取上下文
- 创建路径并设置路径
- 将属性添加到上下文
- 设置上下文属性
- 绘制路径
- 释放路径
绘制直线的代码:
#pragma mark 绘制直线
- (void)drawLine
{
//提示 使用ref的对象不用使用*
//1.获取上下文.-UIView对应的上下文
CGContextRef context = UIGraphicsGetCurrentContext();
//2.创建可变路径并设置路径
//当我们开发动画的时候,通常制定对象运动的路线,然后由动画负责动画效果
CGMutablePathRef path = CGPathCreateMutable();
//2-1.设置起始点
CGPathMoveToPoint(path, NULL, 50, 50);
//2-2.设置目标点
CGPathAddLineToPoint(path, NULL, 200, 200);
CGPathAddLineToPoint(path, NULL, 50, 200);
//封闭路径
//第一种方法
//CGPathAddLineToPoint(path, NULL, 50, 50);
//第二张方法
CGPathCloseSubpath(path);
//3.将路径添加到上下文
CGContextAddPath(context, path);
//4.设置上下文属性
//4.1.设置线条颜色
/*
red 0~1.0 red / 255
green 0~1.0 green / 255
blue 0~1.0 blue / 255
plpha 透明度 0 ~ 1.0
0 完全透明
1.0 完全不透明
提示:在使用rgb设置颜色时。最好不要同时指定rgb和alpha,否则会对性能造成影响。
线条和填充默认都是黑色
*/
CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);
//设置填充颜色
CGContextSetRGBFillColor(context, 0, 1.0, 0, 1.0);
//4.2 设置线条宽度
CGContextSetLineWidth(context, 3.0f);
//设置线条顶点样式
CGContextSetLineCap(context, kCGLineCapRound);
//设置连接点的样式
CGContextSetLineJoin(context, kCGLineJoinRound);
//设置线条的虚线样式
/*
虚线的参数:
phase:相位,虚线的起始位置=通常使用 0 即可,从头开始画虚线
lengths:长度的数组
count : lengths 数组的个数
*/
CGFloat lengths[2] = {20.0,10.0};
CGContextSetLineDash(context, 0, lengths, 3);
//5.绘制路径
/*
kCGPathStroke:划线(空心)
kCGPathFill: 填充(实心)
kCGPathFillStroke:即划线又填充
*/
CGContextDrawPath(context, kCGPathFillStroke);
//6.释放路径
CGPathRelease(path);
}
第二种方法:
使用默认context进行绘图
#pragma mark 使用默认context进行绘图
- (void)drawLine2
{
//1.获取上下文
CGContextRef context = UIGraphicsGetCurrentContext();
//2.设置当前上下问路径
//设置起始点
CGContextMoveToPoint(context, 50, 50);
//增加点
CGContextAddLineToPoint(context, 200, 200);
CGContextAddLineToPoint(context, 50, 200);
//关闭路径
CGContextClosePath(context);
//3.设置属性
/*
UIKit会默认导入 core Graphics框架,UIKit对常用的很多的唱歌方法做了封装
UIColor setStroke设置边线颜色
uicolor setFill 设置填充颜色
*/
[[UIColor redColor]setStroke];
[[UIColor blueColor]setFill];
// [[UIColor yellowColor]set];
//4.绘制路径
CGContextDrawPath(context, kCGPathFillStroke);
}
在frawRect()中进行绘图(必须drawRect中):
- (void)drawRect:(CGRect)rect {
//获取上下文
CGContextRef context = UIGraphicsGetCurrentContext();
[self drawLine];
}