ios-使用CGContextRef重写drawrect画图

使用CGContextRef画图:
- (void)drawRect:(CGRect)rect
{
    CGContextRef context =UIGraphicsGetCurrentContext(); //设置上下文
    
    //画一条线
    CGContextSetStrokeColorWithColor(context, [UIColorredColor].CGColor);//线条颜色
    CGContextSetLineWidth(context,5.0);//线条宽度
    CGContextMoveToPoint(context,20, 20);//开始画线, x,y为开始点的坐标
    CGContextAddLineToPoint(context,300, 20);//画直线, x,y为线条结束点的坐标
    CGContextStrokePath(context);//开始画线
    
    //绘制贝兹曲线
    //贝兹曲线是通过移动一个起始点,然后通过两个控制点,还有一个中止点,调用CGContextAddCurveToPoint()函数绘制
    CGContextSetLineWidth(context,2.0);
    CGContextSetStrokeColorWithColor(context, [UIColorblueColor].CGColor);
    CGContextMoveToPoint(context,10, 10);
    CGContextAddCurveToPoint(context, 200, 50, 100, 400, 300, 400);
    CGContextStrokePath(context);
    
    //绘制连续的曲线
    CGContextSetLineWidth(context,5.0);
    CGContextSetStrokeColorWithColor(context, [UIColorgreenColor].CGColor);
    CGContextMoveToPoint(context,230, 150);//开始画线, x,y为开始点的坐标
    CGContextAddCurveToPoint(context, 310, 100, 300, 200, 220, 220);//画三次点曲线
    CGContextAddCurveToPoint(context, 290, 140, 280, 180, 240, 190);//画三次点曲线
    CGContextStrokePath(context);//开始画线
    
    //绘制虚线
    CGContextSetRGBStrokeColor(context,0.1, 0.2,0.3, 1);//线条颜色
    float dashArray1[] = {3,2};
    CGContextSetLineDash(context, 0, dashArray1, 2);//画虚线
    CGContextMoveToPoint(context,5, 70);//开始画线, x,y为开始点的坐标
    CGContextAddLineToPoint(context,310, 70);//画直线, x,y为线条结束点的坐标
    CGContextStrokePath(context);//开始画线
    
    //绘制虚曲线
    CGContextSetRGBStrokeColor(context,0.3, 0.2,0.1, 1);//线条颜色
    float dashArray2[] = {3,2, 10};
    CGContextSetLineDash(context, 0, dashArray2, 3);//画虚线
    CGContextMoveToPoint(context,5, 90);//开始画线, x,y为开始点的坐标
    CGContextAddCurveToPoint(context, 200, 50, 100, 400, 300, 400);
    CGContextStrokePath(context);//开始画线
    
    //绘制连续的曲线
    CGContextSetLineWidth(context,5.0);
    float dashArray3[] = {3,2, 10, 20,5};
    CGContextSetLineDash(context, 0, dashArray3, 5);//画虚线
    CGContextSetStrokeColorWithColor(context, [UIColorgreenColor].CGColor);
    CGContextMoveToPoint(context,5, 400);//开始画线, x,y为开始点的坐标
    CGContextAddCurveToPoint(context, 50, 200, 80, 300, 100, 220);//画三次点曲线
    CGContextAddQuadCurveToPoint(context,150, 100,200, 200);//画二次点曲线
    CGContextAddCurveToPoint(context, 240, 400, 10, 50, 300, 300);//画三次点曲线
    CGContextStrokePath(context);//开始画线
    
    //画一个方形图形没有边框
    CGContextSetRGBFillColor(context,0, 0.25,0, 0.5);//方框的填充色
    CGContextFillRect(context,CGRectMake(5,150, 100,100)); //画一个方框
    
    //画弧线
    CGContextSetRGBStrokeColor(context,0.3, 0.4,0.5, 1);//线条颜色
    CGContextAddArc(context, 180, 200, 50, 0, 180*(M_PI/180),0);
    CGContextStrokePath(context);//开始画线
    
    //画方形边框
    CGContextRef context5 =UIGraphicsGetCurrentContext(); //设置上下文
    CGContextSetLineWidth(context5,3.0);
    CGContextSetRGBStrokeColor(context5,0.8, 0.1,0.8, 1);
    CGContextStrokeRect(context5,CGRectMake(5,5, 300,400));//画方形边框,参数2:方形的坐标。
    
    //画椭圆
    CGRect aRect= CGRectMake(80,80, 160, 100);
    CGContextSetRGBStrokeColor(context,0.6, 0.9,0, 1.0);
    CGContextSetLineWidth(context,3.0);
    CGContextAddEllipseInRect(context, aRect);//椭圆, 参数2:椭圆的坐标。
    CGContextDrawPath(context,kCGPathStroke);
    
    //画实心圆
    CGContextFillEllipseInRect(context,CGRectMake(95,195, 200.0,100));//画实心圆,参数2:圆坐标。可以是椭圆
    
    //画一个菱形
    CGContextSetLineWidth(context,2.0);
    CGContextSetStrokeColorWithColor(context, [UIColorblueColor].CGColor);
    CGContextMoveToPoint(context,100, 100);
    CGContextAddLineToPoint(context,150, 150);
    CGContextAddLineToPoint(context,100, 200);
    CGContextAddLineToPoint(context,50, 150);
    CGContextAddLineToPoint(context,100, 100);
    CGContextStrokePath(context);
    
    //填充了一段路径:
    CGContextMoveToPoint(context,100, 100);
    CGContextAddLineToPoint(context,150, 150);
    CGContextAddLineToPoint(context,100, 200);
    CGContextAddLineToPoint(context,50, 150);
    CGContextAddLineToPoint(context,100, 100);
    CGContextSetFillColorWithColor(context, [UIColorredColor].CGColor);
    CGContextFillPath(context);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值