本文实例为大家汇总了iOS开发CGContextRef画图使用,供大家参考,具体内容如下
1.创建画布
1
|
CGContextRef ctx = UIGraphicsGetCurrentContext(); |
2.设置属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//旋转,注意:设置操作必须要在添加图形之前,如果设置在添加图形之后的话,此时它已经画完了,无效 //旋转的时候,是整个layer都旋转了 //旋转45度 CGContextRotateCTM(ctx, M_PI_4); //缩放:x方向缩放0.5倍,y方向缩放1.5倍 CGContextScaleCTM(ctx, 0.5, 1.5); //平移:x方向移动50,y方向移动100 CGContextTranslateCTM(ctx, 50, 100); CGContextSetLineJoin(ctx, kCGLineJoinRound); //线条宽度 CGContextSetLineWidth(ctx, 1.0); //起点和终点圆角 CGContextSetLineCap(ctx, kCGLineCapRound); //转角圆角 CGContextSetLineJoin(ctx, kCGLineJoinRound); //透明度 CGContextSetAlpha(ctx, 0.5) |
3.画直线
1
2
3
4
5
6
7
8
9
10
|
//起点 CGContextMoveToPoint(ctx, 10.0, 100.0); //终点 CGContextAddLineToPoint(ctx, self.frame.size.width-20.0, 100.0); //颜色 两种设置颜色的方式都可以 //CGContextSetRGBStrokeColor(ctx, 0, 1.0, 0, 1.0); [[UIColor redColor] set]; //渲染,直线只能绘制空心的,不能调用CGContextFillPath(ctx) // 或者使用这个方法:CGContextDrawPath(ctx, kCGPathStroke); CGContextStrokePath(ctx); |
或者使用下面方法画直线
1
2
3
4
5
6
|
CGPoint point[2]; //坐标点 point[0] = CGPointMake(10.0, 100.0); //起点 point[1] = CGPointMake(self.frame.size.width-20.0, 100.0); //终点 //points[]坐标数组,和count大小 CGContextAddLines(context, aPoints, 2); //添加线 CGContextDrawPath(context, kCGPathStroke); |
4.画虚线
1
2
3
4
5
6
7
8
9
10
11
|
//设置虚线颜色 CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor); //设置虚线绘制起点 CGContextMoveToPoint(ctx, 10.0, 50.0); //设置虚线绘制终点 CGContextAddLineToPoint(ctx, self.frame.size.width-20.0, 50.0); //设置虚线排列的宽度间隔:下面的arr中的数字表示先绘制3个点再绘制1个点 CGFloat arr[] = {3, 2}; //下面最后一个参数“2”代表排列的个数。 CGContextSetLineDash(ctx, 0, arr, 2); CGContextDrawPath(ctx, kCGPathStroke); |
5.画三角形
1
2
3
4
5
6
7
8
9
10
11
12
|
//起点 CGContextMoveToPoint(ctx, self.center.x, 200.0); //拐点1 CGContextAddLineToPoint(ctx, self.center.x-50.0, 250.0); //终点 CGContextAddLineToPoint(ctx, self.center.x+50.0, 250.0); //颜色 两种设置颜色的方式都可以 //CGContextSetRGBStrokeColor(ctx, 0, 1.0, 0, 1.0); [[UIColor redColor] set]; //合并三角形 CGContextClosePath(ctx); CGContextFillPath(ctx); |
6.画矩形
1
2
3
4
|
CGRect rectangle = CGRectMake(10.0, 300.0, self.frame.size.width-20.0, 60.0); CGContextAddRect(ctx, rectangle); CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor); CGContextFillPath(ctx); |
7.画圆
1
2
3
4
5
6
7
8
9
10
11
12
|
/** c 当前图形 x 圆心坐标x y 圆心坐标y radius 半径 startAngle 弧的起点与正X轴的夹角 endAngle 弧的终点与正X轴的夹角 clockwise 指定0创建一个顺时针的圆弧,或是指定1创建一个逆时针圆弧 */ CGContextAddArc(ctx, self.center.x, 100.0, 75.0, 0.0, M_PI+0.5, 0); CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor); CGContextFillPath(ctx); |
8.画椭圆
1
2
3
|
CGContextAddEllipseInRect(ctx, CGRectMake(x, y, 100.0, 60.0)); CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor); CGContextFillPath(ctx); |
9.画扇形
1
2
3
4
5
|
CGContextMoveToPoint(ctx, x, y); CGContextAddArc(ctx, x, y, 75.0, 0.0, M_PI+0.5, 0); CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor); CGContextSetStrokeColorWithColor(ctx, [UIColor blueColor].CGColor); CGContextDrawPath(ctx, kCGPathFillStroke); |
10.画二次贝塞尔曲线
1
2
3
|
CGContextMoveToPoint(context, 120, 300); //设置Path的起点 CGContextAddQuadCurveToPoint(context,190, 310, 120, 390); //设置贝塞尔曲线的控制点坐标和终点坐标 CGContextStrokePath(context); |
11.画三次贝塞尔曲线
1
2
3
|
CGContextMoveToPoint(context, 200, 300); //设置Path的起点 CGContextAddCurveToPoint(context,250, 280, 250, 400, 280, 300); //设置贝塞尔曲线的控制点坐标和控制点坐标终点坐标 CGContextStrokePath(context); |
12.画文字
1
2
3
4
5
|
// 设置文字的属性 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; dict[NSForegroundColorAttributeName] = [UIColor whiteColor]; dict[NSFontAttributeName] = [UIFont systemFontOfSize:14]; [@ "I Love iOS" drawInRect:rect withAttributes:dict]; |
13.画图片
1
2
3
4
5
|
UIImage *image = [UIImage imageNamed:@ "apple.jpg" ]; [image drawInRect:CGRectMake(60, 340, 20, 20)]; //在坐标中画出图片 //[image drawAtPoint:CGPointMake(100, 340)];//保持图片大小在point点开始画图片,可以把注释去掉看看 CGContextDrawImage(context, CGRectMake(100, 340, 20, 20), image.CGImage); //使用这个使图片上下颠倒了 //CGContextDrawTiledImage(context, CGRectMake(0, 0, 20, 20), image.CGImage);//平铺图 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/wgl_happy/article/details/77680059