iOS开发,画曲线和圆
转:http://m.blog.csdn.net/blog/u012881779/21887633
UIView: - (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGRect frame = CGRectMake(50, 100, 100, 100); /*画填充圆 */ CGContextRef context = UIGraphicsGetCurrentContext(); [[UIColor whiteColor] set]; CGContextFillRect(context, rect); CGContextAddEllipseInRect(context, frame); [[UIColor orangeColor] set]; CGContextFillPath(context); /*边框圆 */ CGContextSetRGBStrokeColor(context, 255/255.0, 106/255.0, 0/255.0, 1); CGContextSetLineWidth(context, 5); CGContextAddArc(context, 50, 70, 20, 0, 2*M_PI, 0); CGContextDrawPath(context, kCGPathStroke); /*画直线 */ CGRect markFrame = CGRectMake(100, 250, 200, 200); [[UIColor orangeColor] set]; CGContextSetLineWidth(context, 4); CGPoint points[5]; points[0] = CGPointMake(markFrame.origin.x,markFrame.origin.y); points[1] = CGPointMake(markFrame.origin.x+markFrame.size.width/4, markFrame.origin.y+markFrame.size.height/2); points[2] = CGPointMake(markFrame.origin.x+markFrame.size.width/2, markFrame.origin.y+5); points[3] = CGPointMake(markFrame.origin.x+markFrame.size.width/4*3,markFrame.origin.y+markFrame.size.height/2); points[4] = CGPointMake(markFrame.origin.x+markFrame.size.width, markFrame.origin.y); CGContextAddLines(context, points, 5); CGContextDrawPath(context, kCGPathStroke); //边框圆 CGContextSetLineWidth(context, 5); CGContextAddArc(context, markFrame.origin.x+markFrame.size.width/2, markFrame.origin.y+markFrame.size.height/2, markFrame.size.height/2-2, 0, 2*M_PI, 0); CGContextDrawPath(context, kCGPathStroke); /*曲线 */ [[UIColor redColor] set]; CGContextSetLineWidth(context, 4.0); CGContextSetStrokeColorWithColor(context, [UIColor orangeColor].CGColor); CGContextMoveToPoint(context, 300, 370); CGContextAddCurveToPoint(context, 193, 320, 100, 370, 100, 370); CGContextStrokePath(context); }
/* *画虚线圆 */ CAShapeLayer *dotteLine = [CAShapeLayer layer]; CGMutablePathRef dottePath = CGPathCreateMutable(); dotteLine.lineWidth = 2.0f ; dotteLine.strokeColor = [UIColor orangeColor].CGColor; dotteLine.fillColor = [UIColor clearColor].CGColor; CGPathAddEllipseInRect(dottePath, nil, CGRectMake(50.0f, 50.0f, 200.0f, 200.0f)); dotteLine.path = dottePath; NSArray *arr = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:10],[NSNumber numberWithInt:5], nil]; dotteLine.lineDashPhase = 1.0; dotteLine.lineDashPattern = arr; CGPathRelease(dottePath); [self.view.layer addSublayer:dotteLine]; /* *画实线圆 */ CAShapeLayer *solidLine = [CAShapeLayer layer]; CGMutablePathRef solidPath = CGPathCreateMutable(); solidLine.lineWidth = 2.0f ; solidLine.strokeColor = [UIColor orangeColor].CGColor; solidLine.fillColor = [UIColor clearColor].CGColor; CGPathAddEllipseInRect(solidPath, nil, CGRectMake(50.0f, 300.0f, 200.0f, 200.0f)); solidLine.path = solidPath; CGPathRelease(solidPath); [self.view.layer addSublayer:solidLine]; /* *画虚线 */ CAShapeLayer *dotteShapeLayer = [CAShapeLayer layer]; CGMutablePathRef dotteShapePath = CGPathCreateMutable(); [dotteShapeLayer setFillColor:[[UIColor clearColor] CGColor]]; [dotteShapeLayer setStrokeColor:[[UIColor orangeColor] CGColor]]; dotteShapeLayer.lineWidth = 2.0f ; NSArray *dotteShapeArr = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:10],[NSNumber numberWithInt:5], nil]; [dotteShapeLayer setLineDashPattern:dotteShapeArr]; CGPathMoveToPoint(dotteShapePath, NULL, 20,500); CGPathAddLineToPoint(dotteShapePath, NULL, 20, 285); CGPathAddLineToPoint(dotteShapePath, NULL, 300,285); [dotteShapeLayer setPath:dotteShapePath]; CGPathRelease(dotteShapePath); [self.view.layer addSublayer:dotteShapeLayer]; /* *画实线 */ CAShapeLayer *solidShapeLayer = [CAShapeLayer layer]; CGMutablePathRef solidShapePath = CGPathCreateMutable(); [solidShapeLayer setFillColor:[[UIColor clearColor] CGColor]]; [solidShapeLayer setStrokeColor:[[UIColor orangeColor] CGColor]]; solidShapeLayer.lineWidth = 2.0f ; CGPathMoveToPoint(solidShapePath, NULL, 20, 265); CGPathAddLineToPoint(solidShapePath, NULL, 300,265); CGPathAddLineToPoint(solidShapePath, NULL, 300,50); [solidShapeLayer setPath:solidShapePath]; CGPathRelease(solidShapePath); [self.view.layer addSublayer:solidShapeLayer]