文档章节

Core Graphics

Karlon
 Karlon
发布于 2016/05/12 10:10
字数 864
阅读 35
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Core Graphics是基于C的API,可以用于一切绘图操作

 

Core Graphics 和Quartz 2D的区别

quartz是一个通用的术语,用于描述在iOS和MAC OS X ZHONG 整个媒体层用到的多种技术 包括图形、动画、音频、适配。

Quart 2D 是一组二位绘图和渲染API,Core Graphic会使用到这组API 

Quartz Core 专指Core Animation用到的动画相关的库、API和类

 

 

点和像素的对比

系统拥有坐标系,如320*480 硬件有retain屏幕和非retain屏:如320*480、640*960

Core Graphics 使用的是系统的坐标系来绘制图片。在分辨率为640*960手机上绘制图片时,实际上Core Graphics 的坐标是320*480。这个时候每个坐标系上的点,实际上拥有两个像素。

 

图形上下文

Core Graphics 使用图形上下文进行工作,这个上下文的作用像画家的画布一样。

在图形上下文之外是无法绘图的,我们可以自己创建一个上下文,但是性能和内存的使用上,效率是非常低得。

我们可以通过派生一个UIView的子类,获得它的上下文。在UIView中调用drawRect:方法时,会自动准备好一个图形上下文,可以通过调用

UIGraphicsGetCurrentContext()来获取。 因为它是运行期间绘制图片,我们可以动态的做一些额外的操作

 

Core Graphics的优点

快速、高效,减小应用的文件大小。同时可以自由地使用动态的、高质量的图形图像。 使用Core Graphics,可以创建直线、路径、渐变、文字与图像等内容,并可以做变形处理。

 

绘制自定义视图

drawRect:是系统的方法,不要从代码里面直接调用 drawRect:,而应该使用setNeedsDisplay重绘.

 

需要知道的术语

  • 路径 path 
  • 阴影 shadow 
  • 笔画 stroke 
  • 剪裁路径 Clip Path 
  • 线条粗细 Line Width 
  • 混合模式 Blend Mode 
  • 填充色 Fill Color 
  • 当前形变矩阵 Current Transform Matrix 
  • 线条图案 Line Dash 

图形上下文

一个图形上下文好比是画布上的一副扁平的图画 执行绘画动作,这些动作是在同一个图层上完成的。 图形上下文不允许将内容分不到多个图层中,如果有需求在不同图层上画,可以考虑使用视图层次结构,创建多个UIView,并将他们作为父视图的子视图

图形上下文栈可以把图形上下文的当前状态保存下来,并在执行一些动作后再次恢复回来

CGContextSaveGState(); 

CGContextStoreGState(); 

 

路径、渐变、文字和图像

1. 使用UIBezierPath创建路径 

2. 手动创建路径 moveToPoint addLineToPoint addArcWithCenter addCurveToPoint

 

渐变,渐变可以在指定方向上,以可变的比率在一系列颜色之间转化 

线性渐变:沿着一条定义好了起点和重点的直线方向,呈线性变化。如果这条线有一定角度,线性渐变也会沿相同路径变化

放射渐变:颜色顺着两个原型之间的方向线性变化,这两个园为起始圆和终止圆,每隔圆都有自己的圆心和班级

 

文字 

darwAtPoint

drawInRect 

 

图像 

Core Graphics 不会保持图像的长宽比例,Core Graphics会将图像的边界设置为CGrect,不管图片是否变形 darwAtPoint drawInRect

 

Karlon
粉丝 10
博文 13
码字总数 3930
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。

暂无文章

App Builder 2020中文版

教程: 1、断开网络连接,下载解压,运行对应操作系统App Builder 2020安装包; 2、在弹出的窗口中勾选同意条款协议,点击【Next】; 3、创建桌面快捷方式,点击【Next】; 4、一切准备就绪,...

osc_62a7f5bj
50分钟前
19
0
蚂蚁金服轻量级类隔离框架 Maven 打包插件解析 | SOFAArk 源码解析

SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁金服自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 本文为《...

SOFAStack
03/19
11
0
Java 高级 面试题 及 参考答案

一、面试题基础总结 1、 JVM结构原理、GC工作机制详解 答:具体参照:JVM结构、GC工作机制详解 ,说到GC,记住两点:1、GC是负责回收所有无任何引用对象的内存空间。 注意:垃圾回收回收的是无...

osc_np3y0rbq
51分钟前
22
0
面试准备季——MyBatis 面试专题(含答案)

写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:https://github.com/abel-max/Java-Study-...

osc_1ipdqsf2
52分钟前
8
0
Redis 高频面试题:10w+QPS 的 Redis 真的只是因为单线程和基于内存?

你以为 Redis 这么快仅仅因为单线程和基于内存? 那么你想得太少了,我个人认为 Redis 的快是基于多方面的:不但是单线程和内存,还有底层的数据结构设计,网络通信的设计,主从、哨兵和集群...

osc_qgfjs4a5
53分钟前
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部