iOS 之绘制直线、曲线、矩形等

闲话少叙,直接上代码:

CGContextRef context= UIGraphicsGetCurrentContext(); //设置上下文

//画一条线
CGContextSetStrokeColorWithColor(context,[UIColor redColor].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,[UIColor blueColor].CGColor);
CGContextMoveToPoint(context, 10, 10);
CGContextAddCurveToPoint(context, 200, 50, 100, 400, 300, 400);
CGContextStrokePath(context);


//绘制连续的曲线
CGContextSetLineWidth(context, 5.0);
CGContextSetStrokeColorWithColor(context,[UIColor greenColor].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);//画虚线,可参考http://blog.csdn.net/zhangao0086/article/details/7234859
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,[UIColor greenColor].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,[UIColor blueColor].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,[UIColor redColor].CGColor);
CGContextFillPath(context);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值