// 当自定义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. linux 内核与用户空间通信机制netlink初探

      1.Linux进程概述 Linux中的进程间通信机制源自于Unix平台上的进程通信机制.Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上各有所不同,前者形成了运行 ...

  2. Unix Tutorial Four

    4.1 wildcards 通配符 * 通配符,配对1个或以上字符 ?通配符,只配对1个 4.2 Filename conventions 文件名约定 注意: 1. 目录是特殊的文件,故文件名的命名规 ...

  3. 飘逸的python - 单例模式乱弹

    方法一:装饰器 利用“装饰器只会执行一次”这个特点 def singleton(cls): instances = []# 为什么这里不直接为None,因为内部函数没法访问外部函数的非容器变量 def ...

  4. GVIM安装手记

    GVIM安装手记 1. 安装GIT及GVIM Downloa Git URL : https://gitforwindows.org/ Downloa GVim URL : https://www.v ...

  5. zoj3195(lca / RMQ在线)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3195 题意: 给出一棵 n 个节点的带边权的树, 有 q 组形 ...

  6. 清除input框对浏览器保存的用户名和密码自动填充问题

    清除input框对浏览器保存的用户名和密码自动填充问题: type类型写如下写法,聚焦的时候type类型为“password” <input ng-model="getpwd" ...

  7. js new一个对象的过程,实现一个简单的new方法

    对于大部分前端开发者而言,new一个构造函数或类得到对应实例,是非常普遍的操作了.下面的例子中分别通过构造函数与class类实现了一个简单的创建实例的过程. // ES5构造函数 let Parent ...

  8. Migrations中的更新语句写法,摘要

    public override void Up() { AlterColumn("dbo.Dispositions", "Property1", c => ...

  9. myeclipse编辑jsp页面卡

    现象 但是遇到了一种情况,编辑jsp页面卡,尤其是使用快捷键ctrl+ 时会很卡. 编辑java页面没问题的,比较流畅. 在jsp页面中一点ctrl+  就卡几秒钟. 按照上篇文章中优化过后只是编辑j ...

  10. Python——连接数据库

    好用的教程(*^▽^*):https://www.cnblogs.com/fatcat132006/p/4081576.html