记录一下CGContextAddArcToPoint 的用法:
需要三个点, 连城两条直线, 然后根据中间的夹角画弧,不需要确定圆心以及起始结束位置
下面看看下面的而例子和图形比较容易理解
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context,1,0,0,1);
CGContextMoveToPoint(context,150,50);
CGContextAddLineToPoint(context,100,80);
CGContextAddLineToPoint(context,130,150);
CGContextMoveToPoint(context,150,50);//圆弧的起始点
CGContextAddArcToPoint(context,100,80,130,150,50);
CGContextStrokePath(context);
20130926134549046.png
@ 绘制的时候 从p1 -> p2 p2 -> p3 连接的直线 然后在其夹角画弧
@ move 的时候 为p1
@ addArc 参数中 start:p2, end:p3, 最后结束点为新的p1(即p3作为次下次的p1)
下面的方法 是绘制一个中间透明 四周背景的image 用于在view需要圆角优化的时候 在上面添加一个imageView即可
- (UIImage *)drawRectImageSize:(CGSize)size {
UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat radius = 30;
CGFloat x1,x2,x3,x4,y1,y2,y3,y4;
x1 = 0;
x2 = 30;
x3 = size.width - x2;
x4 = size.width;
y1 = 0;
y2 = 30;
y3 = size.height - y2;
y4 = size.height;
// 绘制的时候 从p1 -> p2 p2 -> p3 连接的直线 然后在其夹角画弧,
// move 的时候 为p1 addArc start:p2 end:p3, 最后结束点为新的p1(即p3作为次下次的p1)
CGContextMoveToPoint(context, x1, y2);
CGContextAddArcToPoint(context, x1, y1, x2, y1, radius);
CGContextAddArcToPoint(context, x4, y1, x4, y2, radius);
CGContextAddArcToPoint(context, x4, y4, x3, y4, radius);
CGContextAddArcToPoint(context, x1, y4, x1, y3, radius);
CGContextAddLineToPoint(context, x1, y2);
CGContextSetLineWidth(context, 0);
// CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathFillStroke);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
效果:其中superView是一个红色的view 上面添加的imageView 背景白色 这样被盖住了下面的
屏幕快照 2018-08-09 下午2.50.57.png
网友评论