#import "myView.h" @implementation myView - (void)drawRect:(CGRect)rect { NSLog(@"drawRect被调用了"); // [self drawLine]; CGContextRef context = UIGraphicsGetCurrentContext(); // [self drawRectWithContext: context]; // [self drawArc:context]; [self drawCurve:context]; } -(void) drawLine { //获取图形上下文 CGContextRef context = UIGraphicsGetCurrentContext(); //设置线的起点位置 CGContextMoveToPoint(context, 0, 0); //添加线段到点 CGContextAddLineToPoint(context, 375/2.0, 667/2.0); CGContextAddLineToPoint(context, 375, 0); //绘制闭合路径 CGContextClosePath(context); CGContextMoveToPoint(context, 375/2.0, 667/2.0); CGContextAddLineToPoint(context, 375/2.0, 667); [[UIColor redColor]set]; //设置线条宽度 CGContextSetLineWidth(context, 5.0); //设置填充颜色 CGContextSetRGBFillColor(context, 0, 0, 1, 1); //渲染显示到view上 CGContextDrawPath(context, kCGPathFillStroke); } -(void) drawRectWithContext : (CGContextRef)context { //确定矩形图像的大小位置 CGRect rect = CGRectMake(20, 20, 335, 50); CGContextAddRect(context, rect); //设置矩形的属性 [[UIColor blueColor]set]; //绘制 CGContextDrawPath(context, kCGPathFillStroke); } #pragma mark 绘制椭圆 -(void)drawEllipse : (CGContextRef)context { CGRect rect = CGRectMake(50, 50, 275, 200); CGContextAddEllipseInRect(context, rect); //设置属性 [[UIColor purpleColor]set]; //绘制 CGContextDrawPath(context, kCGPathFillStroke); } #pragma mark 绘制弧 -(void) drawArc : (CGContextRef)context { /* x: 中心点x坐标 y: 中心点y坐标 radius: 半径 startAngle: 起始弧度 endAngle: 结束弧度 clockwise: 是否逆时针绘制, 0则顺时针绘制 */ CGContextAddArc(context, 375/2.0, 667/2.0, 100, 0.0, M_PI_2, 1); //设置属性 [[UIColor orangeColor]setFill]; //绘制 CGContextDrawPath(context, kCGPathStroke); } #pragma mark 绘制贝塞尔曲线 -(void) drawCurve : (CGContextRef) context { CGContextMoveToPoint(context, 20, 500); /* cp1x: 第一个控制点x坐标 cp1y: 第一个控制点y坐标 cp2x: 第二个控制点x坐标 cp2y: 第二个控制点y坐标 x: 结束点x坐标 y: 结束点y坐标 */ CGContextAddCurveToPoint(context, 20, 300, 295, 500, 355, 300); //设置属性 [[UIColor yellowColor]setFill]; [[UIColor redColor]setStroke]; //第一条切线 CGContextMoveToPoint(context, 20, 500); CGContextAddLineToPoint(context, 20, 300); //第二条切线 CGContextMoveToPoint(context, 355, 300); CGContextAddLineToPoint(context, 295, 500); //绘制 CGContextDrawPath(context, kCGPathFillStroke); } //一个控制点的贝塞尔曲线 -(void) drawOneCurve : (CGContextRef) context { //移动到曲线起始位置 CGContextMoveToPoint(context, 20, 100); CGContextAddQuadCurveToPoint(context, 187.5, 0, 355, 100); [[UIColor yellowColor]setFill]; [[UIColor redColor]setStroke]; //绘制 CGContextDrawPath(context, kCGPathFillStroke); } @end