【深入浅出IOS开发】绘制一个小黄人

①首先绘制一个身体

绘制身体的时候要分上中下三段,先设置坐标和长度,然后带入相应的函数中。

一般圆形和弧形用圆心设置

②绘制一个人的嘴型

绘制嘴的时候要点是:通过贝塞尔曲线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);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值