①首先绘制一个身体
绘制身体的时候要分上中下三段,先设置坐标和长度,然后带入相应的函数中。
一般圆形和弧形用圆心设置
②绘制一个人的嘴型
绘制嘴的时候要点是:通过贝塞尔曲线CGContextAddQuadCurveToPoint绘制。
贝塞尔曲线分三个点:起始点,控制点,结束点
我们通过控制点来约束起始点(CGContextMoveToPoint),和结束点。
- //绘制身体
- void drawBody(CGContextRef ctr,CGRect rect)
- {
- //绘制上半身
- CGFloat topX = rect.size.width*0.5;
- CGFloat topY = 200;
- CGFloat topRadius = 70;
- CGContextAddArc(ctr, topX , topY, topRadius, 0, M_PI, 1);
- //绘制中间
- CGFloat midX = topX - topRadius;
- CGFloat midY = 100;
- CGContextAddLineToPoint(ctr, midX, topY + midY);
- //绘制下半身
- CGFloat endX = topX;
- CGFloat endY = midY + topY;
- CGFloat endRadius = topRadius;
- CGContextAddArc(ctr, endX, endY, endRadius, M_PI, 0, 1);
- //设置颜色
- [[UIColor yellowColor]set];
- //闭合路径
- CGContextClosePath(ctr);
- CGContextFillPath(ctr);
- }
- //画脸
- void drawMouse(CGContextRef ctr,CGRect rect)
- {
- //控制点
- CGFloat controlX = rect.size.width*0.5;
- CGFloat controlY = 300;
- //左右和上下移动间距
- CGFloat moveX = 30;
- CGFloat moveY = 15;
- //开始点
- CGFloat startX = controlX - moveX;
- CGFloat startY = controlY - moveY;
- CGContextMoveToPoint(ctr, startX, startY);
- //结束点
- CGFloat endX = controlX + moveX;
- CGFloat endY = controlY - moveY;
- //设置颜色
- [[UIColor blackColor]set];
- //通过贝塞尔曲线绘制嘴型
- CGContextAddQuadCurveToPoint(ctr, controlX, controlY, endX, endY);
- CGContextStrokePath(ctr);
- }