// 当自定义view第一次显示出来的时候就会调用drawRect方法
- (void)drawRect:(CGRect)rect
{ // 1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 画圆
CGContextAddArc(ctx, , , , , * M_PI, ); // 3.渲染 (注意, 画线只能通过空心来画)
CGContextFillPath(ctx);
} - (void)test3
{ // 1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 2.画饼状图
// 画线
CGContextMoveToPoint(ctx, , );
CGContextAddLineToPoint(ctx, , );
// 画圆弧
CGContextAddArc(ctx, , , , M_PI_2, M_PI, );
// CGContextAddArc(ctx, 100, 100, 50, -M_PI, M_PI_2, 1); // 关闭路径
CGContextClosePath(ctx); // 3.渲染 (注意, 画线只能通过空心来画)
CGContextFillPath(ctx);
// CGContextStrokePath(ctx);
} - (void)test2
{
// 画圆弧
// 1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 2.画圆弧
// x/y 圆心
// radius 半径
// startAngle 开始的弧度
// endAngle 结束的弧度
// clockwise 画圆弧的方向 (0 顺时针, 1 逆时针)
// CGContextAddArc(ctx, 100, 100, 50, -M_PI_2, M_PI_2, 0);
CGContextAddArc(ctx, , , , M_PI_2, M_PI, );
CGContextClosePath(ctx); // 3.渲染
// CGContextStrokePath(ctx);
CGContextFillPath(ctx);
}
- (void)test
{
// 画圆
// 1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 2.画圆
CGContextAddEllipseInRect(ctx, CGRectMake(, , , )); [[UIColor greenColor] set]; // 3.渲染
// CGContextStrokePath(ctx);
CGContextFillPath(ctx);
}
// 当自定义view第一次显示出来的时候就会调用drawRect方法
- (void)drawRect:(CGRect)rect
{
// 1.取得和当前视图相关联的图形上下文(因为图形上下文决定绘制的输出目标)/ // 如果是在drawRect方法中调用UIGraphicsGetCurrentContext方法获取出来的就是Layer的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.绘图(绘制直线), 保存绘图信息
// 设置起点
CGContextMoveToPoint(ctx, , );
// 设置终点
CGContextAddLineToPoint(ctx, , ); // 设置绘图状态
// 设置线条颜色 红色
CGContextSetRGBStrokeColor(ctx, 1.0, , , 1.0);
// 设置线条宽度
CGContextSetLineWidth(ctx, );
// 设置线条的起点和终点的样式
CGContextSetLineCap(ctx, kCGLineCapRound);
// 设置线条的转角的样式
CGContextSetLineJoin(ctx, kCGLineJoinRound);
// 绘制一条空心的线
CGContextStrokePath(ctx); /*------------------华丽的分割线---------------------*/ // 重新设置第二条线的起点
CGContextMoveToPoint(ctx, , );
// 设置第二条直线的终点(自动把上一条直线的终点当做起点)
CGContextAddLineToPoint(ctx, , );
// 设置第二条线的颜色 绿色
// [[UIColor greenColor] set];
CGContextSetRGBStrokeColor(ctx, , 1.0, , 1.0); // 绘制图形(渲染图形到view上)
// 绘制一条空心的线
CGContextStrokePath(ctx); }
- (void)drawRect:(CGRect)rect
{
// Drawing code
// 绘制四边形
// 1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 2.绘制四边形
CGContextAddRect(ctx, CGRectMake(, , , )); // 如果要设置绘图的状态必须在渲染之前
// CGContextSetRGBStrokeColor(ctx, 1.0, 0, 0, 1.0);
// 绘制什么类型的图形(空心或者实心).就要通过什么类型的方法设置状态
// CGContextSetRGBFillColor(ctx, 1.0, 0, 0, 1.0); // 调用OC的方法设置绘图的颜色
// [[UIColor purpleColor] setFill];
// [[UIColor blueColor] setStroke];
// 调用OC的方法设置绘图颜色(同时设置了实心和空心)
// [[UIColor greenColor] set];
[[UIColor colorWithRed:1.0 green: blue: alpha:1.0] set]; // 3.渲染图形到layer上
CGContextStrokePath(ctx);
// CGContextFillPath(ctx); } void test1()
{
// 1.获取图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2. 绘制三角形
// 设置起点
CGContextMoveToPoint(ctx, , );
// 设置第二个点
CGContextAddLineToPoint(ctx, , );
// 设置第三个点
CGContextAddLineToPoint(ctx, , );
// 设置终点
// CGContextAddLineToPoint(ctx, 100, 10);
// 关闭起点和终点
CGContextClosePath(ctx);
// 3.渲染图形到layer上
CGContextStrokePath(ctx);
}

IOS 绘制基本图形( 画圆、画线、画圆弧、绘制三角形、绘制四边形)的更多相关文章

  1. CSS 魔法系列:纯 CSS 绘制基本图形(圆、椭圆等)

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  2. iOS:quartz2D绘图(绘制渐变图形)

    quartzD可以用来绘制渐变图形,即图形向外或向内发散,会变得越来越模糊. 渐变分为线性渐变和径向渐变,所谓线性渐变,就是图形以线的方式发散,发散后一般呈现出矩形的样子:而径向渐变,就是以半径的大小 ...

  3. Windows控制台下绘制简单图形

    最近接触到一个很有意思的问题,如何在Windows控制台下画图,翻遍了C的头文件也没找到画图的函数,好吧,那就用Windows提供的API函数吧,看来想移植是没戏了.先画一个简单的图,类似心电图那种吧 ...

  4. 自定义View(2)canas绘制基本图形的示例

    效果 代码: void drawSample(Canvas canvas) { /* * 方法 说明 drawRect 绘制矩形 drawCircle 绘制圆形 drawOval 绘制椭圆 drawP ...

  5. [html5] 学习笔记-Canvas 绘制渐变图形与绘制变形图形

    在 HTML5 中,使用 Canvas API 绘制图形的知识,可以对绘制图形进行处理,包含使用 Canvas API 绘制渐变图形,使用 Canvas API 的坐标轴变换处理功能绘制变形图形.其中 ...

  6. 10┃音视频直播系统之 WebRTC 中的数据统计和绘制统计图形

    一.数据统计 在视频直播中,还有一项比较重要,那就是数据监控 比如开发人员需要知道收了多少包.发了多少包.丢了多少包,以及每路流的流量是多少,才能评估出目前用户使用的音视频产品的服务质量是好还是坏 如 ...

  7. 【液晶模块系列基础视频】4.1.X-GUI图形界面库-画线画圆等函数简介

    [液晶模块系列基础视频]4.1.X-GUI图形界面库-画线画圆等函数简介 ============================== 技术论坛:http://www.eeschool.org 博客地 ...

  8. H5中画图标签Canvas---画矩形,画线,画圆,渐变色,图形载入

    一: 1.鼠标监视坐标值 <!DOCTYPE html> <head> <meta charset=UTF-8> <title>canvas的演示< ...

  9. 纯JS画点、画线、画圆的方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. CODING 告诉你硅谷项目经理的项目管理之道(2)

    优秀的项目管理者是怎么工作的?如何帮助研发团队高效工作?这一直是 CODING 关注的重要话题,我们不断地打磨 CODING 研发管理系统来让开发更简单. 近期我们精心挑选了几篇硅谷科技公司研发管理者 ...

  2. CEPH安装教程(上)

    环境拓扑 主机 配置 地址 运行服务 node CPU:1 内存:2GB 磁盘:vda(20GB) br-mgmt:92.0.0.250 br-ex:192.168.203.250/19 ntp an ...

  3. java 提取(解压)rar文件中特定后缀的文件并保存到指定目录

    内容简介 本文主要介绍使用junrar来提取rar压缩文件中特定后缀(如:png,jpg)的文件并保存到指定目录下. 支持v4及以下版本压缩文件,不支持v5及以上. 在rar文件上右键,查看属性,在压 ...

  4. 清北刷题冲刺 11-01 a.m

    立方体 /* 输入数据中的p的位置是没有用的,而题目本质上是求C(n,k) */ #include<iostream> #include<cstdio> #define mod ...

  5. Pipenv: Python包管理神器

    Pipenv旨在将最好的包管理机制(bundler, composer, npm, cargo, yarn等等)带到Python中去. 它会为你的项目自动创建和管理virtualenv,也会在安装和移 ...

  6. Leetcode题解

    前言 Leetcode现在弄了一个Weekly Contest,然后题目又会作为新题目:感觉如果现在还不及时刷题的话可能真的赶不上它题目增长的速度了.......题目会在博客和Github上同步更新的 ...

  7. angular中[hidden]="expression"注意事项

    [hidden]="expression",右侧的表达式尽量使用布尔值:虽然比较运算符也可以达到效果,但时常会出现一些莫名其妙的错误.

  8. 转 怎样用grep命令去掉空格行和以#开头的行

    怎样用grep命令去掉空格行和以#开头的行 https://jingyan.baidu.com/article/359911f544c36b57fe030637.html

  9. Hadoop源生实用工具之distcp

    1 概览 DistCp(Distributed Copy)是用于大规模集群内部或者集群之间的高性能拷贝工具. 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成. 它把文件和目录的列 ...

  10. android 开发-AsyncTask异步任务的实现

     AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过 ...