这些天一直准备学绘图和核心动画这块,可一直找不到合适系统的教材,没有大纲,比较纠结,在网上搜了又搜,看着其他的博文写的

第一遍来学习绘制简单的图形

// 若想利用Quartz 2D在View上绘制信息,首先必须有图形上下文,用来保存绘图信息,输出目标。其次,图像上下文与View相关联(这时候图形上下文的输出目标即为关联的View)

// 1.为什么需要在drawrect中绘图? 因为在drawRect:方法中才能取得跟view相关联的图形上下文
// 2.drawRect:方法在什么时候被调用?
   //1.当view第一次显示到屏幕上时(被加到UIWindow上显示出来)
   //2.调用view的setNeedsDisplay或者setNeedsDisplayInRect:时
// 3.绘图顺序  后绘制的图形若与先绘制的图形发生重叠,后绘制的图形覆盖先绘制的图形

- (void)drawRect:(CGRect)rect {
    //画直线
    //获取图像上下文,在此方法调用获取的是layer的上下文
    CGContextRef context=UIGraphicsGetCurrentContext();
    //设置起点
    CGContextMoveToPoint(context, 20, 100);
    //设置终点
    CGContextAddLineToPoint(context, 50, 60);
    CGContextAddLineToPoint(context, 60, 80);
    //设置线条颜色 二选一
   /* [[UIColor yellowColor]set];//设置边框填充颜色都为同一种
    [[UIColor yellowColor] setStroke];//设置边框颜色
    [[UIColor yellowColor] setFill];// 设置填充颜色*/
    CGContextSetRGBStrokeColor(context, 0, 1.0, 0, 1.0);
    //设置填充颜色
    CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
    //设置线条宽度
    CGContextSetLineWidth(context, 5.0);
    //设置起点终点样式为圆角
    CGContextSetLineCap(context,  kCGLineCapRound);
    //设置线条转角样式为圆角
    CGContextSetLineJoin(context, kCGLineJoinRound);
    //渲染到图层上  不调用前面设置的不显示
    //线条边框渲染
    CGContextStrokePath(context);
    //填充 内部填充
//    CGContextFillPath(context);

    //画三角
    //设置三个点
    CGContextMoveToPoint(context, 30, 120);
    CGContextAddLineToPoint(context, 50, 200);
    CGContextAddLineToPoint(context, 200, 60);
     CGContextAddLineToPoint(context, 200, 80);
    //设置边框颜色
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
    //连接起点终点 无的话是只是几个点按顺序相连,起始点并未连接
    CGContextClosePath(context);
    CGContextStrokePath(context);
//    CGContextFillPath(context);

    //画矩形
    CGContextAddRect(context, CGRectMake(50, 60, 100, 80));
    [[UIColor blueColor] setStroke];
//    CGContextFillPath(context);
    CGContextStrokePath(context);

    //画圆 1参数 上下文 2、3参数 圆中心x、y坐标 4参数 半径 5、6参数起始角度 7参数 0顺时针 1逆时针
    CGContextAddArc(context, 60, 60, 20, 3.1415026/2, 0, 1);
    CGContextStrokePath(context);
    //画椭圆 圆是特殊的椭圆 所以可以用画椭圆的方法来画圆
    CGContextAddEllipseInRect(context, CGRectMake(80, 80, 100, 200));
    CGContextStrokePath(context);

    //画圆弧
    CGContextAddArc(context, 160, 160, 50, 3.1415026/2, 0, 1);
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.5, 1.0);
    CGContextClosePath(context);
    CGContextStrokePath(context);
}

Quartz2D简单图形的更多相关文章

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

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

  2. iOS开发UI篇—Quartz2D简单使用(一)

    iOS开发UI篇—Quartz2D简单使用(一) 一.画直线 代码: // // YYlineview.m // 03-画直线 // // Created by apple on 14-6-9. // ...

  3. iOS开发UI篇—Quartz2D简单使用(三)

    iOS开发UI篇—Quartz2D简单使用(三) 一.通过slider控制圆的缩放 1.实现过程 新建一个项目,新建一个继承自UIview的类,并和storyboard中自定义的view进行关联. 界 ...

  4. iOS开发UI篇—Quartz2D简单使用(一)

    iOS开发UI篇—Quartz2D简单使用(一) 一.画直线 代码: 1 // 2 // YYlineview.m 3 // 03-画直线 4 // 5 // Created by apple on ...

  5. iOS边练边学--(Quartz2D)基本图形的绘制#附加自定义进度控件的练习

    一.Quartz2D使用须知 Quartz2D的API是纯C语言的 Quartz2D的API来自于Core Graphics框架 二.<1>通过原始的方法(C语言)绘制简单图形--了解 & ...

  6. AJ学IOS(28)UI之Quartz2D简单介绍

    AJ分享,必须精品 iOS开发UI篇—Quartz2D简单介绍 什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : ...

  7. 学习笔记:HTML5 Canvas绘制简单图形

    HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...

  8. iOS开发UI篇—Quartz2D简单使用(二)

    iOS开发UI篇—Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...

  9. [ASP.NET] 图形验证码破解-以简单图形为例

    原文 http://www.dotblogs.com.tw/joysdw12/archive/2013/06/08/captcha-cracked.aspx 前言 这次来讲个比较有趣的主题,就是该如何 ...

随机推荐

  1. Linux (rz、sz命令行)与本地电脑 命令行上传、下载文件

    Linux 与本地电脑直接交互, 命令行上传.下载文件. 一.lrzsz命令行安装: 1.rpm安装:(链接: http://pan.baidu.com/s/1cBuTm2 密码: vijf) rpm ...

  2. 4.动态HTML处理和机器图像识别

    Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上, ...

  3. Linux-压缩与归档

    压缩:gzip/gunzip.bzip2/bunzip2.xz/unxz 归档:tar ####归档+压缩:zip 1. gzip, gunzip, zcat - compress or expand ...

  4. 【转】ABP webapi三种方式

    作者:圣杰 链接:https://www.jianshu.com/p/d14733432dc2 來源:简书 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1. 引言 上一节我们 ...

  5. MD5和SHA加密实现

    @Test public void TestMD5AndSHA() throws NoSuchAlgorithmException { String MD5=Md5("123456" ...

  6. “全栈2019”Java多线程第三十三章:await与signal/signalAll

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. Java Calender 类详解

    一.   如何创建 Calendar 对象 Calendar 是一个抽象类, 无法通过直接实例化得到对象. 因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar ...

  8. python 数据类型三 (字典)

    一.字典的介绍 字典(dict)是python中唯一的一个映射类型,它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存 ...

  9. DES/3DES/AES区别

    公元前400年,古希腊人发明了置换密码.1881年世界上的第一个电话保密专利出现.在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用. DES 1977年1月,美国 ...

  10. 08-02 Java 代码块,代码块执行的先后顺序问题

    代码块 /* 代码块:在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为 局部代码块:局部位置,用于限定变量的生命周期. 构造代码块:在类中的成员位置,用{}括起来的代 ...