1. 获取Graphics Context

CGContextRef  ctx = UIGraphicsGetCurrentContext();

  

2. 最后的渲染接口

CGContextStrokePath(ctx);//渲染空心图形,但线条没有空心直说,只有宽度
CGContextFillPath(ctx);//渲染实心图形,如圆、矩形等。

3. 基本接口

3.1. 基本图形接口

3.1.1.  颜色设置
//第一种颜色设置
CGContextSetRGBStrokeColor(ctx, 1.0, 0.7, 0.3, 1.0); //第二种颜色设置
CGContextSetRGBFillColor(ctx, 1.0, 0.7, 0.3, 1.0); //第三种设置颜色的方式:同时设置空心颜色和实心颜色
[[UIColor grayColor] set] //第四种颜色设置 实心颜色
[[UIColor grayColor] setFill] //第五种颜色设置 空心颜色
[[UIColor grayColor] setStroke] //第六种颜色设置
[[UIColor colorWithRed:1.0 green: blue: alpha:1.0] set];
3.1.2.  直线
// 设置起点
CGContextMoveToPoint(ctx, , );
// 设置终点
CGContextAddLineToPoint(ctx, , ); //关闭起点和终点
CGContextClosePath(ctx);

  直线属性:

//设置线条的宽度
CGContextSetLineWidth(ctx, ); //设置线条起点和终点的样式为圆角
CGContextSetLineCap(ctx, kCGLineCapRound); //设置线条的转角的样式为圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound);
3.1.3.  矩形
CGContextAddRect(ctx, CGRectMake(, , , ));
3.1.4.  圆
//圆
CGContextAddArc(ctx, , , , , * M_PI, ); //椭圆
CGContextAddEllipseInRect(ctx, CGRectMake(, , , ));
3.1.5.  圆弧

  第一种方式,跟画圆一样,只是弧度大小小于 2*M_PI, 一个M_PI是180度。

CGContextAddArc(CGContextRef  _Nullable c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)

//参数分别为:Graphics Context, 圆心X轴,圆心Y轴,半径,起始弧度,结束弧度,顺/逆时针

  空心绘制时需要封口。

3.1.6.  饼状图

  饼状图由两条线,和一个没有封口的圆弧组成。或者实现起来由一条线,一个圆弧,然后封口组成。注意的是,圆弧的圆心和线的起点是同一个点。

// 画线
CGContextMoveToPoint(ctx, , );
CGContextAddLineToPoint(ctx, , ); // 画圆弧
CGContextAddArc(ctx, , , , M_PI_2, M_PI, ); // 关闭路径
CGContextClosePath(ctx);

  M_PI对应的弧度是180度,这样,就可以根据比例来算初始位置和大小了。

Quartz2D 之 简单使用的更多相关文章

  1. QuartZ2D __ 简单用法 1

    一. 简单做一个画板 1. 建立一个UIView类 2. 在.m里建立一个延展 3. 分别定义一个起点, 一个终点的结构体属性 . 在建立一个存储路径的数组 @interface DrawView ( ...

  2. iOS-绘图(Quartz2D)的简单使用(原创)

    前言 附上绘图demo--https://github.com/yangfangxue/YFX_Quartz-2D 什么是Quartz2D? Quartz 2D是一个二维图形绘制引擎,支持ios环境和 ...

  3. Quartz2D 之 简单介绍

    1. 概述 Quartz2D 是一个二维绘图引擎. 主要功能: 绘制图形:线.矩形.圆.弧 绘制文字 绘制图片 绘制PDF 裁截图片 自定义UI控件 2. 图形上下文 Graphics Context ...

  4. 【iOS开发-80】Quartz2D画图简单介绍:直线/圆形/椭圆/方形以及上下文栈管理CGContextSaveGState/CGContextRestoreGState

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  5. iOS Quartz2D画图

    对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系 ...

  6. iOS 之 Quartz2D

    1. Quartz2D 之 简单介绍 2. Quartz2D 之 简单使用 3. Quartz2D 之 绘制文本

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

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

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

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

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

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

随机推荐

  1. iOS中FMDB和GCD剖析

    转载至:http://www.cocoachina.com/industry/20130819/6821.html 英文链接:https://github.com/ccgus/fmdb 由于FMDB是 ...

  2. AVR之BOOTLOADER技术详解(转)

    源:http://blog.csdn.net/zhenhua10/article/details/6442412 ATmega128具备引导加载支持的用户程序自编程功能(In-System Progr ...

  3. fiddler2 中文乱码问题

    打开注册表编辑器,找到HKCU\Software\Microsoft\Fiddler2\,在里面添加一个字符串值,名叫HeaderEncoding,值设置为默认编码.建议设成GB18030.然后要记得 ...

  4. 使用JQuery结合HIghcharts实现从后台获取JSON实时刷新图表

    项目做了一个报表,可以实时的观察呼叫中心的电话访问量,之前的版本是使用JFreechart做的,使用一段时间后出现内存溢出,服务器的内存使用量会变得很大,所以改用Ajax前台加载数据的方式实现实时报表 ...

  5. 配置snort

    0.如果要输出到mysql,请安装barnyard2 在此之前,请启动并配置mysql git clone https://github.com/firnsy/barnyard2 cd barnyar ...

  6. 设计一个 iOS 控件

    转载自:http://blog.csdn.net/zhangao0086/article/details/45622875 代码的等级:可编译.可运行.可测试.可读.可维护.可复用 前言 一个控件从外 ...

  7. Android------>TableLayout表格布局方式

    main.xml表格代码分析 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmln ...

  8. Direct3D中的绘制

    1.顶点缓存和索引缓存 一个顶点缓存是一个包含顶点数据的连续内存空间:一个索引缓存是一个包含索引数据的连续内存空间. 顶点缓存用接口IDirect3DVertexBuffer9表示:索引缓存用接口ID ...

  9. 关于 Equal Override Overload 和 IEquatable

    namespace TestEqual { class Program { static void Main(string[] args) { Point2D a = new Point2D { X ...

  10. hdu1915

    对于图的东西总是一筹莫展,没办法,还是翻出以前的基础题来看看,然后慢慢分析吧.路漫漫其修远兮,吾将上下而求索…… void bfs(int x,int y){ for(int k=0;k<8;k ...