今天初始Quartz2D,我好激动啊,也好开心,莫名的会喜欢带有图形相关的课程……

好啦,闲话少说,今天用Quartz2D方法画了最最爱的大白。迫不及待的想要和大家分享。

1、首先实例化了view

2、在实例化的view的写代码就可以了,是不是很简单。

//不允许直接调用drawRect方法,使用setNeedsDisplay 间接调用drawRect方法

- (void)drawRect:(CGRect)rect {

//获得图形上下文

//获得当前图形上下文

CGContextRef  context = UIGraphicsGetCurrentContext();

//头

[self drawHeader:context];

[self drawHeader2:context];

//眼睛

[self drawEye:context];

[self drawEye2:context];

[self drawEye3:context];

[self drawEye4:context];

[self drawEyeLine:context];

//身体

[self drawBody:context];

[self drawBody2:context];

[self drawBody3:context];

[self drawBody4:context];

[self drawBody5:context];

//脚

[self drawBody6:context];

[self drawBody7:context];

}

#pragma mark 画头(上边)

- (void)drawHeader :(CGContextRef) context{

// 1.  圆心 ,半径,起始和终止角度 ,方向

CGContextAddArc(context, self.frame.size.width/2, 150, 50, 0,- M_PI, 1);

CGContextStrokePath(context);

}

#pragma mark 画头(下边)

- (void)drawHeader2 :(CGContextRef) context{

// 1.  圆心 ,半径,起始和终止角度 ,方向

CGContextAddArc(context, self.frame.size.width/2, 150, 50, 0,- M_PI, 0);

CGContextStrokePath(context);

}

#pragma mark 眼睛(左下)

-(void)drawEye:(CGContextRef) context{

CGContextAddArc(context, 162, 160, 10, 0,- M_PI, 0);

CGContextFillPath(context);

}

#pragma mark 眼睛(左上)

-(void)drawEye2:(CGContextRef) context{

CGContextAddArc(context, 162, 160, 10, 0,- M_PI, 1);

CGContextFillPath(context);

}

#pragma mark 眼睛(右下)

-(void)drawEye3:(CGContextRef) context{

CGContextAddArc(context, 212, 160, 10, 0,- M_PI, 0);

CGContextSetLineWidth(context, 3);

CGContextFillPath(context);

}

#pragma mark 眼睛(右上)

-(void)drawEye4:(CGContextRef) context{

CGContextAddArc(context, 212, 160, 10, 0,- M_PI, 1);

CGContextSetLineWidth(context, 3);

CGContextFillPath(context);

}

#pragma mark 眼睛连线

- (void)drawEyeLine :(CGContextRef) context{

//移动到某一点

CGContextMoveToPoint(context, 162, 160);

//添加一条线

CGContextAddLineToPoint(context, 212, 160);

CGContextSetLineWidth(context, 3);//线宽

//    3.绘制图形

CGContextStrokePath(context);

}

#pragma mark  身体(左) 贝塞尔

- (void)drawBody:(CGContextRef) context{

CGPoint p1=CGPointMake(152, 185);

CGPoint p2=CGPointMake(20, 290);

CGPoint p3=CGPointMake(120, 400);

CGContextMoveToPoint(context, p1.x, p1.y);

CGContextAddQuadCurveToPoint(context, p2.x, p2.y, p3.x, p3.y);

CGContextStrokePath(context);

}

#pragma mark  身体(右)贝塞尔

- (void)drawBody2:(CGContextRef) context{

CGPoint p1=CGPointMake(222, 185);

CGPoint p2=CGPointMake(355, 290);

CGPoint p3=CGPointMake(255, 400);

CGContextMoveToPoint(context, p1.x, p1.y);

CGContextAddQuadCurveToPoint(context, p2.x, p2.y, p3.x, p3.y);

CGContextStrokePath(context);

}

#pragma mark  身体(下)贝塞尔

- (void)drawBody3:(CGContextRef) context{

CGPoint p1=CGPointMake(120, 400);//第一个点

CGPoint p2=CGPointMake(187.5, 450);//中间的点

CGPoint p3=CGPointMake(255, 400);//第二个点

CGContextMoveToPoint(context, p1.x, p1.y);

CGContextAddQuadCurveToPoint(context, p2.x, p2.y, p3.x, p3.y);

CGContextStrokePath(context);

}

#pragma mark  身体(左胳膊) 贝塞尔

- (void)drawBody4:(CGContextRef) context{

CGPoint p1=CGPointMake(148, 180);

CGPoint p2=CGPointMake(0, 300);

CGPoint p3=CGPointMake(103, 380);

CGContextMoveToPoint(context, p1.x, p1.y);

CGContextAddQuadCurveToPoint(context, p2.x, p2.y, p3.x, p3.y);

CGContextStrokePath(context);

}

#pragma mark  身体(右胳膊)贝塞尔

- (void)drawBody5:(CGContextRef) context{

CGPoint p1=CGPointMake(226, 180);

CGPoint p2=CGPointMake(375, 300);

CGPoint p3=CGPointMake(272, 380);

CGContextMoveToPoint(context, p1.x, p1.y);

CGContextAddQuadCurveToPoint(context, p2.x, p2.y, p3.x, p3.y);

CGContextStrokePath(context);

}

#pragma mark 脚(左)贝塞尔

- (void)drawBody6:(CGContextRef) context{

CGPoint p1=CGPointMake(120, 400);

CGPoint p2=CGPointMake(140, 450);

CGPoint p3=CGPointMake(175, 424);

CGContextMoveToPoint(context, p1.x, p1.y);

CGContextAddQuadCurveToPoint(context, p2.x, p2.y, p3.x, p3.y);

CGContextStrokePath(context);

}

#pragma mark 脚(左)贝塞尔

- (void)drawBody7:(CGContextRef) context{

CGPoint p1=CGPointMake(255, 400);

CGPoint p2=CGPointMake(234, 450);

CGPoint p3=CGPointMake(199, 424);

CGContextMoveToPoint(context, p1.x, p1.y);

CGContextAddQuadCurveToPoint(context, p2.x, p2.y, p3.x, p3.y);

CGContextStrokePath(context);

}

@end

原谅小菜鸟见得世面少,不过,真的有认真地写了代码,请喜欢大白的童鞋,拿去试试吧,大白送给你们。

今天学习很开心,明天继续加油,大家一起加油哟~~

Quartz2D 画大白的更多相关文章

  1. 【二次元的CSS】—— 用 DIV + CSS3 画大白(详解步骤)

    原本自己也想画大白,正巧看到一位同学(github:https://github.com/shiyiwang)也用相同的方法画了. 且细节相当到位.所以我就fork了一下,在此我也分享一下.同时,我也 ...

  2. AJ学IOS(34)UI之Quartz2D画画板的实现

    AJ分享,必须精品 效果: 实现过程: 首先用storyboard搭建界面,没有什么好说的. 然后就是注意的功能了,这里用了触摸事件来搭配Quartz2D的路径来画画. 思路就是把路径放到数组中 @p ...

  3. 用纯CSS画大白

    纯CSS打造网页大白知识点:      首先要把大白分割,整体baymax中包含header(eye1,eye2,mouth),torso(heart),belly(cover),l-bigfinge ...

  4. AJ学IOS(29)UI之Quartz2D自定义下载控件_画各种图形

    AJ分享,必须精品 效果 自定义控件过程 主要过程在上一篇里有介绍了,这里主要介绍下代码实现 先做好要放的view 然后实现呢主要就是四步: 1:获取上下文 2:拼接路径 3:把路径添加到上下文. 4 ...

  5. Quartz2D之绘制一个简单的机器猫

    学习iOS有一段时间了,在博客园也默默的潜水了两个月,见识了很多大神,收获不少. 今天整理笔记,发现忘记的不少,我感觉需要及时的整理一下了,同时也把做的小东西贴上来和大家分享一下. 最近学习了Quar ...

  6. iOS开发——UI进阶篇(十五)Quartz2D介绍

    一.Quartz2D简介 1.什么是Quartz2DQuartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作绘制图形 : 线条\三角形\矩形\圆\弧等绘制文字绘 ...

  7. iOS开发UI篇—Quartz2D简单介绍

    iOS开发UI篇—Quartz2D简单介绍 一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\ ...

  8. 【iOS】Quartz2D简单介绍

    一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图 ...

  9. Quartz2D学习笔记(1)

    ********************************** 简介 *************************************** Quartz2D是⼀个二维绘图引擎,同时支持 ...

随机推荐

  1. php 升级排错

    lnmp 环境下,升级php版本,模块都加载完成,数据库,nginx 设置都完好,但php 只能用ip 访问数据库,不能用localhost,处理要设置php.ini 的三个mysqld.sock,还 ...

  2. url-pattern

    一,servlet容器对url的匹配过程: 当 一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是 http://lo ...

  3. 黑马程序员_ Objective-c 内存管理笔记

    引用计数器 当一个对象被创建出来,就要分配给内存这个对象,当不用这个对象的时候,就要及时的回收,为了可以明确知道对象有没有被使用,就要用引用计数器来体现,只要计数器不为0,表明对象被使用中. 1.方法 ...

  4. 关于Unity游戏开发方向找工作方面的一些个人看法

     这是个老生常谈,却又是谁绕不过去的话题,而对于每个人来说,所遇到的情况又不尽相同,别人的求职方式和路线不一定适合你,即使是背景很相似的两个人,有时候机遇也很重要. 我本人的工作经验只有一年,就业方式 ...

  5. 实用的Portraiture滤镜磨皮教程

    滤镜可以快速地进行人物皮肤美化处理,Portraiture滤镜可以将皮肤柔化,消除多余的斑点,在磨皮后复制细节保留较多的通道到图层面板,用高反差保留滤镜提取细节,再更改图层混合模式即可以得到漂亮的肤色 ...

  6. Python-2 print

    #1 print函数(python版本3.3.5): >>> help(print)Help on built-in function print in module builtin ...

  7. IOS 中openGL使用教程1(openGL ES 入门篇 | 搭建openGL环境)

    OpenGL版本 iOS系统默认支持OpenGl ES1.0.ES2.0以及ES3.0 3个版本,三者之间并不是简单的版本升级,设计理念甚至完全不同,在开发OpenGL项目前,需要根据业务需求选择合适 ...

  8. 手机APP测试的几大点

    移动互联网App测试点包括: 1.安全测试: 安全测试包括: a.软件是否存在扣费风险,比如发送短信,拨打电话,连接网络等. b.软件是否存在泄漏用户隐私的风险,比如访问手机信息,访问联系人信息等. ...

  9. python平台跨平台开发

    有助于跨平台开发的 os 模块属性: linesep  用于在文件中分隔行的字符串 sep  用来分隔文件路径名的字符串 pathsep 用于分隔文件路径的字符串 curdir  当前工作目录的字符串 ...

  10. css3动画2(transform用法)

    1.直接写在样式里,比如一个小箭头,transform:rotate(135deg)即可 2.写动画过程,@keyframes和transform和animation组合起来用 写在@keyframe ...