Quartz 2D 画贝塞尔曲线
- (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); // Drawing with a white stroke color CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); // Draw them with a 2.0 stroke width so they are a bit more visible. CGContextSetLineWidth(context, 2.0); // Draw a bezier curve with end points s,e and control points cp1,cp2 CGPoint s = CGPointMake(30.0, 120.0); CGPoint e = CGPointMake(300.0, 120.0); CGPoint cp1 = CGPointMake(120.0, 30.0); CGPoint cp2 = CGPointMake(210.0, 210.0); CGContextMoveToPoint(context, s.x, s.y); CGContextAddCurveToPoint(context, cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y); CGContextStrokePath(context); // Show the control points. CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); CGContextMoveToPoint(context, s.x, s.y); CGContextAddLineToPoint(context, cp1.x, cp1.y); CGContextMoveToPoint(context, e.x, e.y); CGContextAddLineToPoint(context, cp2.x, cp2.y); CGContextStrokePath(context); // Draw a quad curve with end points s,e and control point cp1 CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); s = CGPointMake(30.0, 300.0); e = CGPointMake(270.0, 300.0); cp1 = CGPointMake(150.0, 180.0); CGContextMoveToPoint(context, s.x, s.y); CGContextAddQuadCurveToPoint(context, cp1.x, cp1.y, e.x, e.y); CGContextStrokePath(context); // Show the control point. CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); CGContextMoveToPoint(context, s.x, s.y); CGContextAddLineToPoint(context, cp1.x, cp1.y); CGContextStrokePath(context); }