IOS--Quartz2D绘图绘制小黄人

学习了Quartz2D后,练习着画了个简单的小黄人,分享一下代码

自定义一个继承于UIView的视图,调用drawRect方法:

#import "HumenView.h"
#define color(r,g,b)     [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1]

@implementation HumenView


- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    //身体
    //上半圆
    CGFloat topCicleX = rect.size.width/2;
    CGFloat topCicleY = 150;
    CGFloat topradius = 70;
    CGContextAddArc(ctx, topCicleX, topCicleY, topradius, 0,M_PI, 1);
    
    //向下延伸
    CGFloat middleX = topCicleX - topradius;
    CGContextAddLineToPoint(ctx, middleX, topCicleY + 100);
    CGContextAddArc(ctx, topCicleX, topCicleY + 100, topradius, M_PI, 0, 1);
    
    CGContextClosePath(ctx);

    //设置颜色
    [color(252, 218, 0)setFill];
    CGContextFillPath(ctx);

    //画嘴 控制点
    CGFloat controlX = rect.size.width/2;
    CGFloat controlY = rect.size.height/3;
    CGFloat marginX = 30;
    CGFloat marginY = 20;
    
    
    CGFloat currentX = controlX - marginX;
    CGFloat currentY = controlY - marginY;
    CGContextMoveToPoint(ctx, currentX, currentY);
    
    
    CGFloat endX = controlX + marginX;
    CGFloat endY = currentY;
    [[UIColor blackColor]set];

    CGContextAddQuadCurveToPoint(ctx, controlX, controlY, endX, endY);
    
    CGContextStrokePath(ctx);
    
    //画眼睛
    //绑带
    CGContextMoveToPoint(ctx, middleX, topCicleY);
    CGContextAddLineToPoint(ctx, middleX+topradius*2, topCicleY);
    CGContextSetLineWidth(ctx, 20);
    [[UIColor blackColor]setStroke];
    CGContextStrokePath(ctx);
    
    //最外的镜框
    CGFloat radius = topradius *0.4;
    CGFloat kuangX = topCicleX - radius;
    CGFloat kuangY = topCicleY;
    
    //左边
    CGContextAddArc(ctx, kuangX, kuangY, radius, 0, M_PI*2, 1);
  [[UIColor lightGrayColor]set];
    CGContextFillPath(ctx);
    
    // 右边
    CGContextAddArc(ctx, topCicleX + radius, kuangY, radius, 0, M_PI*2, 1);
    [[UIColor lightGrayColor]set];
    CGContextFillPath(ctx);
    
    //白色镜框
    
    CGContextAddArc(ctx, topCicleX - radius, kuangY, radius*0.7, 0, M_PI*2, 1);
    [[UIColor whiteColor]set];
    CGContextFillPath(ctx);
    
    CGContextAddArc(ctx, topCicleX + radius, kuangY, radius*0.7, 0, M_PI*2, 1);
    [[UIColor whiteColor]set];
    CGContextFillPath(ctx);
    //眼珠
    CGFloat eyeRadius = 10;
    CGFloat eyeX = topCicleX - eyeRadius - 10;
    CGFloat eyeY = kuangY;
    
    CGContextAddArc(ctx, eyeX, eyeY, eyeRadius, 0, M_PI*2, 1);
    [color(66,25,11)set];
    CGContextFillPath(ctx);
    CGContextAddArc(ctx, topCicleX + eyeRadius + 10, eyeY, eyeRadius, 0, M_PI*2, 1);
    [color(66,25,11)set];
    CGContextFillPath(ctx);

}
@end

IOS--Quartz2D绘图绘制小黄人_第1张图片

你可能感兴趣的:(IOS--Quartz2D绘图绘制小黄人)