简单介绍使用贝塞尔曲线画图方法:折线、二阶、三阶、矩形、圆形、圆弧。
- (void)drawRect:(CGRect)rect
{
NSLog(@"%s",__FUNCTION__);//当前函数,类型char const*
// 1.贝塞尔曲线
// 创建一个BezierPath对象
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
// 设置线宽
bezierPath.lineWidth = 8;
// 终点处理:设置结束点曲线
bezierPath.lineCapStyle = kCGLineCapRound;
// 拐角处理:设置两个连接点曲线
bezierPath.lineJoinStyle = kCGLineJoinRound;
// 设置线的颜色
[[UIColor redColor] setStroke];
// 设置填充颜色
[[UIColor greenColor] setFill];
// 设置线段的起始位置
[bezierPath moveToPoint:CGPointMake(100, 100)];
// 添加点
[bezierPath addLineToPoint:CGPointMake(100, 300)];
[bezierPath addLineToPoint:CGPointMake(300, 300)];
// 闭合曲线:让起始点和结束点连接起来
[bezierPath closePath];
// 描绘
[bezierPath stroke];
// 填充
[bezierPath fill];
// 2.二阶贝塞尔曲线(抛物线)
// 创建bezierPath对象
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
bezierPath.lineWidth = 8;// 线宽
[[UIColor redColor] setStroke];// 线条颜色
// 设置起始位置
[bezierPath moveToPoint:CGPointMake(80, 300)];
[bezierPath addQuadCurveToPoint:CGPointMake(260, 200) controlPoint:CGPointMake(160, 80)];
[bezierPath stroke];
// 3.三阶贝塞尔曲线
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
bezierPath.lineWidth = 9;
[[UIColor redColor] setStroke];
[bezierPath moveToPoint:CGPointMake(20, 300)];
[bezierPath addCurveToPoint:CGPointMake(280, 160) controlPoint1:CGPointMake(120, 200) controlPoint2:CGPointMake(190, 350)];
[bezierPath stroke];
// 4.在给定区域中画图
// 矩形
UIBezierPath *bezierPath1 = [UIBezierPath bezierPathWithRect:CGRectMake(50, 50, 200, 100)];
bezierPath1.lineWidth = 8;
[[UIColor redColor] setStroke];
[[UIColor yellowColor] setFill];
[bezierPath1 stroke];
[bezierPath1 fill];
// 圆
// rect如果传入的是正方形,则画出一个内切圆,如果是长方形,则画出一个内切椭圆
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, 200, 100)];
bezierPath.lineWidth = 8;
[[UIColor blackColor] setStroke];
[bezierPath stroke];
// 5.画圆弧
/*
参数说明:
ArcCenter:圆弧中心
radius:半径
startAngle:起始弧度
endAngle:结束弧度
clockwise:是否顺时针
*/
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(160, 200) radius:100 startAngle:M_PI_2 endAngle:M_PI clockwise:YES];
bezierPath.lineWidth = 9;
[[UIColor redColor] setStroke];
[bezierPath stroke];
}