博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS--Quartz2D绘图绘制小黄人
阅读量:6007 次
发布时间:2019-06-20

本文共 2613 字,大约阅读时间需要 8 分钟。

hot3.png

学习了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

210035_DzWm_2454190.png

转载于:https://my.oschina.net/zhangqy/blog/507839

你可能感兴趣的文章
【编译打包】haproxy 1.4.23
查看>>
软件测试工具qc9+oracle10g安装指南
查看>>
常见TS权限问题"终端服务器用户访问"
查看>>
angular ngClick 阻止冒泡和默认行为
查看>>
云场景实践研究第46期:吉利汽车
查看>>
烂泥:Linux源码包制作RPM包之Apache
查看>>
ASP.NET MVC3 验证
查看>>
测试工程师与开发工程师的搏奕
查看>>
Tomcat-5.5.20下配置MySQL-5.0.27的数据库连接池(一)
查看>>
服务器托管注意事项
查看>>
看奥运赛事得到的几点启示
查看>>
030 漂亮的页面标题
查看>>
PCI ROOT HID fail=0x5 ACPI Linux错误一般解决之道
查看>>
Android应用程序键盘(Keyboard)消息处理机制分析(2)
查看>>
Hadoop1.2完全分布式安装与配置
查看>>
Symfony2CookBook:如何使用虚拟的表单域选项
查看>>
select 忽略查询字段值大小写【小技巧】
查看>>
java:eclipse小图标含义
查看>>
FireFox插件
查看>>
[FtpSearchV2][构架设计][第一篇] 系统需求和概要设计
查看>>