2. Quartz2D 绘制直线

#import <UIKit/UIKit.h>

@interface MyView : UIView

@end
#import "MyView.h"

@implementation MyView

-(void) drawRect:(CGRect)rect{
    //1.取出上下文 --当前绘图的位置(设备)
    CGContextRef context = UIGraphicsGetCurrentContext();

    [self drawLine];
}


#pragma mark 绘制直线2,使用默认context进行绘图
-(void)drawLine2{
    //1. 获取上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    
     //2. 设置路径
    //1)设置起始点
    CGContextMoveToPoint(context, 50, 50);
    //2)增加点
    CGContextAddLineToPoint(context, 200, 200);
    CGContextAddLineToPoint(context, 50, 200);
    //3)关闭路径
    CGContextClosePath(context);
    
    //3 设置属性
    /*
     UIkit 默认会导入Core Grapthics,UIKit对常用的很多CG方法做了封装
     UIColor setStroke  设置变形颜色
     UIColor setFill    设置填充颜色
     UIColor set        设置边线和填充颜色
     */
    //设置边线
//    [[UIColor redColor]setStroke];
    //设置填充
//    [[UIColor blueColor]setFill];
    [[UIColor greenColor]set];
    
    //4 绘制路径
    CGContextDrawPath(context, kCGPathFillStroke);
}

#pragma mark 绘制直线
-(void) drawLine{
    //提示:使用Ref声明的对象,不需要用*
    //1. 获取上下文 - UIView对应的上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //2. 创建路径并设置路径(可变路径)
    /**
     注意:当我们开发动画的时候,通常需要指定对象运动的路线,然后由动画方法负责实现动画效果
     
     因此,在动画开发中,需要熟练使用路径
     */
    CGMutablePathRef path =CGPathCreateMutable();
    //划线
    // 1)设置起始点
    CGPathMoveToPoint(path, NULL, 50, 50);
    // 2)设置中间点
    // 3)设置目标点
    CGPathAddLineToPoint(path, NULL, 200, 200);
    CGPathAddLineToPoint(path, NULL, 50, 200);

    // 4) 设置封闭路径
    // 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, 1.0);
    CGContextSetRGBFillColor(context, 0, 1, 0, 1.0);
    //设置线条宽度
    CGContextSetLineWidth(context, 5.0f);
    //设置线条的顶点样式
    CGContextSetLineCap(context, kCGLineCapRound);
    //设置线条的链接点样式
    CGContextSetLineJoin(context, kCGLineJoinRound);
    //设置线条虚线样式
    /*
     虚线参数
     context:
     phase:相位、虚线起始位置,通常使用0,从都开始画
     lengths:长度数组
     count lengths:数组个数
     */
    CGFloat lengths[3] = {10,20,30};
    CGContextSetLineDash(context, 0, lengths, 3);
    
    //5. 绘制路径
    /**
     kCGPathStroke 画线(空心)
     kCGPathFill 填充(实心)
     kCGPathFillStroke 即画线又填充
     */
    CGContextDrawPath(context, kCGPathFillStroke);
    //6. 释放路径
    CGPathRelease(path);
}

@end

 

转载于:https://www.cnblogs.com/wlxm/p/4294971.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值