CGPath CGContext UIBezierPath的比较

//
//  PathView.m
//  Qauze
//
//  Created by apple on 16/6/2.
//  Copyright © 2016年 李重阳. All rights reserved.
//

#import "PathView.h"

@implementation PathView

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.backgroundColor = [UIColor blueColor];
    }
    return self;
}

- (void)drawRect:(CGRect)rect {

    [self CGPath];

    [self CGContext];

    [self bezier];

    [self drawRound];
}


/*
 *  一: CGPath
 **/
- (void)CGPath {

    CGContextRef ref = UIGraphicsGetCurrentContext();
    CGMutablePathRef pathRef = CGPathCreateMutable();
    //1.设置起点
    CGPathMoveToPoint(pathRef, nil, 5, 5);
    //2.加入线
    CGPathAddLineToPoint(pathRef, nil, 50, 50);
    //3.把path 放到contextRef 中
    CGContextAddPath(ref, pathRef);
    CGPathRelease(pathRef);

    [[UIColor redColor]setStroke];


//    CGContextSetStrokeColorWithColor(ref, [UIColor redColor].CGColor);
    /* 
     *这句话必须加上去 否则 不会开始绘制
     *这句话是开始绘制CGPath路径
     **/
    CGContextStrokePath(ref);

}

/*
 * 二: 直接用CGContext 绘制
 **/
- (void)CGContext {

    CGContextRef ref = UIGraphicsGetCurrentContext();
    CGContextMoveToPoint(ref, 50, 50);
    CGContextAddLineToPoint(ref, 100, 100);
    CGContextAddLineToPoint(ref, 10, 60);
    CGContextSetLineWidth(ref, 5);
    CGContextSetLineCap(ref, kCGLineCapRound);
    CGContextSetLineJoin(ref, kCGLineJoinBevel);

    [[UIColor yellowColor]setFill];
    [[UIColor cyanColor]setStroke];


    /*
     * 3种方法绘制 path
     * 1.CGContextFillPath(ref); 绘制填充
     * 2.CGContextStrokePath(ref); 绘制 笔触
     * 3.CGContextDrawPath(ref, kCGPathFillStroke); 绘制填充和笔触
     **/

    CGContextDrawPath(ref, kCGPathFillStroke);


}

/*
 * 贝塞尔曲线
 **/
- (void)bezier {

    UIBezierPath * path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(100,100)];
    [path addLineToPoint:CGPointMake(200, 100)];
    [path addLineToPoint:CGPointMake(150, 200)];
    [path setLineCapStyle:kCGLineCapRound];
    [path setLineJoinStyle:kCGLineJoinBevel];
    [path setLineWidth:5];
    [[UIColor redColor]setFill];
    [[UIColor yellowColor]setStroke];
    [path stroke];
    [path fill];
    [path closePath];

}

/*
 * 贝塞尔曲线绘制 圆 ,椭圆 ,扇形
 **/
- (void)drawRound {

    //绘制圆
    UIBezierPath * path = [UIBezierPath bezierPath];
    [path addArcWithCenter:CGPointMake(100, 100) radius:50 startAngle:0 endAngle:M_PI*1.5 clockwise:YES];
    [path setLineWidth:10];
    [[UIColor yellowColor]setStroke];
    [path stroke];


    //绘制椭圆
    UIBezierPath * path1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 100, 200)];
    [path1 setLineWidth:5];
    [path1 stroke];



}


@end




















你可能感兴趣的:(Quartz2D)