绘制直线的方法

1.

// 提示,使用Ref声明的对象,不需要用*
    // 1. 获取上下文-UIView对应的上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    // 2. 创建可变的路径并设置路径
    /**
     注意:当我们开发动画的时候,通常需要指定对象运动的路线,然后由动画方法负责实现动画效果
     
     因此,在动画开发中,需要熟练使用路径
     */
    CGMutablePathRef path = CGPathCreateMutable();
    // 划线->
    // 1) 设置起始点
    CGPathMoveToPoint(path, NULL, 50, 50);
    // 2) 设置目标点
    CGPathAddLineToPoint(path, NULL, 200, 200);
    CGPathAddLineToPoint(path, NULL, 50, 200);
    
    // 3) 封闭路径
    // a) 直接指定目标点
//    CGPathAddLineToPoint(path, NULL, 50, 50);
    // b) 使用关闭路径方法
    CGPathCloseSubpath(path);
    
    // 3. 将路径添加到上下文
    CGContextAddPath(context, path);
    
    // 4. 设置上下文属性
    /*
     设置线条颜色
     red  0 ~ 1.0  red / 255
     green 0 ~ 1.0 green / 255
     blue 0 ~ 1.0 blue / 255
     alpha 透明度 0 ~ 1.0 
        0 - 完全透明
        1.0 - 完全不透名
     
     提示:
        1) 在使用rgb颜色设置时,最好不要同时指定 rgb 和 alpha,否则会对性能造成一定影响
        2) 默认线条和填充颜色都是黑色
     */
    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
    CGContextSetRGBFillColor(context, 0.0, 1.0, 0.0, 1.0);
    
    // 设置线条宽度
    CGContextSetLineWidth(context, 5.0);
    // 设置线条的顶点样式
    CGContextSetLineCap(context, kCGLineCapRound);
    // 设置线条的连接点样式
    CGContextSetLineJoin(context, kCGLineJoinRound);
    // 设置线条的虚线样式
    /**
     虚线的参数
     
     context
     phase 相位,虚线起始的位置,通常使用0即可,从头开始画虚线
     lengths 长度的数组
     count lengths数组的个数
     */
    CGFloat lengths[2] = {20.0, 10.0};
    CGContextSetLineDash(context, 0.0, lengths, 2);
    
    // 5. 绘制路径
    /**
     kCGPathStroke: 画线(空心)
     kCGPathFill:   填充(实心)
     kCGPathFillStroke: 即画线又填充
     */
    CGContextDrawPath(context, kCGPathFillStroke);
    
    // 6. 释放路径
    CGPathRelease(path);

2,使用 UIBezierPath 拼接路径

- (void)drawSupernene
{
    // 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    // 2.拼接路径
    UIBezierPath *path = [UIBezierPath bezierPath];
    
    CGPoint startP = CGPointMake(10, 10);
    
    [path moveToPoint:startP];
    
    [path addLineToPoint:CGPointMake(125, 125)];
    
    [path addLineToPoint:CGPointMake(240, 10)];
    
    // 从路径的终点连接到起点
    [path closePath];
    //    [path addLineToPoint:startP];
    
    // 3.把路径添加到上下文
    CGContextAddPath(ctx, path.CGPath);
    
    [[UIColor blueColor] setFill];
    [[UIColor redColor] setStroke];
    
    CGContextSetLineWidth(ctx, 15);
    
    // 4.渲染上下文
    //    CGContextStrokePath(ctx);
    //    CGContextFillPath(ctx);
    // 即填充又描边 kCGPathFillStroke
    CGContextDrawPath(ctx, kCGPathFillStroke);
}
View Code

 

posted on 2015-07-08 23:45  pTrack  阅读(253)  评论(0)    收藏  举报