①首先绘制一个身体
绘制身体的时候要分上中下三段,先设置坐标和长度,然后带入相应的函数中。
一般圆形和弧形用圆心设置
②绘制一个人的嘴型
绘制嘴的时候要点是:通过贝塞尔曲线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);
}