Quartz2D进行渲染1. 渲染模式2. even-odd rule:奇偶填充规则3. nonzero winding number rule:非零绕数规则4. 其他会用到的渲染模式5. 混合模式

这一晃就到了2017年,这期间好多假期啊,圣诞节、元旦,还赶上了一次为期一周的封闭开发。距离上一次更新文章过去了三周多,好羞惭。

上一篇写了Quartz2D的一些基本用法,今天分享一下Quartz2D的渲染模式。

1. 渲染模式

  • 空心 StrokePath- 实心 FillPath 和 EOFillPath (填充)
  • 填充一个路径的时候,路径里面的子路径都是独立填充的。
  • 假如是重叠的路径,决定一个点是否被填充,有两种规则
    • 1,nonzero winding number rule(非零绕数规则),假如一个点被从左到右跨过,计数器+1,从右到左跨过,计数器-1,最后,如果结果是0,那么不填充,如果是非零,那么填充。
    • 2,even-odd rule(奇偶规则),假如一个点被跨过1次,被跨过了奇数次,那么要被填充,被跨过偶数次则不填充,和方向没有关系

2. even-odd rule:奇偶填充规则

  • 当一个点被覆盖过奇数次则“填充”,偶数次则“不填充”。
CGContextEOFillPath(ctx);

奇偶填充规则

3. nonzero winding number rule:非零绕数规则

  • 当一个点被从左到右覆盖过标记为1,从右到左覆盖过标记为-1
CGContextDrawPath(ctx, kCGPathEOFillStroke);
  • 当标记为0的时候不填充,其他则填充- 简单总结,这个规则与方向有关,与次数无关

非零绕数规则

4. 其他会用到的渲染模式

  • 调用 CGContextDrawPath(context, kCGPathFill) 填充路径。
  • 调用 CGContextDrawPath(context, kCGPathStroke) 描边路径。
  • 调用 CGContextDrawPath(context, kCGPathFillStroke) 填充并描边路径。

5. 混合模式

  • 调用 CGContextSetBlendMode(context, kCGBlendModeNormal) 设置回合模式。 混合模式与常用的图形软件(如 Photoshop)的混合模式效果相同。有没有瞬间觉得高大上啊?

如果有兴趣继续深入了解,可以参考:官方文档。 在简书上,还看到过一篇连载,非常不错。FalmeCore Graphics - Quartz 2D Programming Guide(中文翻译版)

下一篇咱们就要开始聊一聊OC下的贝塞尔曲线绘制了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信宝典

利用ComplexHeatmap绘制热图(一)

作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源。

2732
来自专栏崔庆才的专栏

滑动宫格验证码都给碰上了?没事儿,看完此文分分钟拿下!

2165
来自专栏macOS 开发学习

Mac开发跬步积累(四):ImageIO解析Gif 图像数据

这里可以看到Gif 是保存了多幅图像的一个图像文件,有了这个基础认识,我们就可以使用代码来解析Gif图像了.

863
来自专栏hightopo

HTML5的五种客户端离线存储方案

1075
来自专栏数据小魔方

Excel单元格内容合并的技巧!!!

今天给大家分享单元格内容合并的技巧! ▽ 之前推送过一篇单元格数据分裂的技巧,很多同学都私信我说很实用,并且希望以后能够多写一些这种可以瞬间提升工作效率的小技巧...

2907
来自专栏HT

HTML5五种客户端离线存储方案

最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于HT for Web写了个综合的实例,分别利用了Cookie、WebS...

2246
来自专栏kalifaの日々

动态规划真的可以为所欲为的(Leetcode 62/63)

看起来不错的运行效率 62题: 动态规划递推公式: 站在当前方块上可选择的路径数量 = 我正下方那个方块可选择的路径数量 + 我右侧那个方块可选择的路径数量; ...

3516
来自专栏偏前端工程师的驿站

CSS魔法堂:你真的理解z-index吗?

一、前言                                 假如只是开发简单的弹窗效果,懂得通过z-index来调整元素间的层叠关系就够了。但要将...

1865
来自专栏Rainbond开源「容器云平台」

你问我爱你有多深,源码代表我的心

1474
来自专栏ytkah

css自动换行如何设置?url太长会撑开页面

  我们更新文章时如果有引用其他文章一般会带一个原文url,但这个链接如果太长的话会把内容的版块撑开,整个排版乱了。那我们能不能设置css自动换行呢?如下图所示...

2745

扫码关注云+社区