美文网首页
iOS绘图上下文的理解

iOS绘图上下文的理解

作者: 二猪哥 | 来源:发表于2017-08-10 17:26 被阅读56次

在调用drawRect:方法之前,绘图系统创建了一个图形上下文(CGContext)。上下文包括大量信息,比如画笔颜色、文本颜色、当前字体、变形等。有时你可能想要修改上下文并使其恢复原样。举个例子,你现在有一个使用特定颜色绘制特定形状的函数。由于只能有一只画笔,因此在更改颜色后,就会影响调用函数的结果。为了避免这个副作用,你可以使用CGContextSaveGState和CGContextRestoreGState将上下文入栈和出栈。

不要与看起来相似的UIGraphicsPushContext和UIGraphicsPopContext混淆。它们做的并不是同一件事。CGContextSaveGState记录上下文的当前状态。UIGraphicsPushContext更改当前上下文。以下是CGContextSaveGState的示例。

[[UIColor redColor]setStroke];

CGContextSaveGState(UIGraphicsGetCurrentContext());

[[UIColor blackColor]setStroke];

CGContextRestoreGState(UIGraphicsGetCurrentContext());

UIRectFill(CGRectMake(10,10,100,100));//红

这段代码设置了画笔的颜色为红色并保存了上下文。之后它将把画笔颜色改成黑色并恢复上下文。这样当你绘图的时候,画笔又会变成红色了。

使用UIGraphicsPushContext并不能保存上下文的当前**状态**(画笔颜色、线条宽度等),而是完全切换上下文。假设你正在当前视图上下文中绘制什么东西,这时想要在位图上下文中绘制完全不同的东西。如果要使用UIKit来进行任意绘图,你会希望保存当前的UIKit上下文,包括所有已经绘制的内容,接着切换到一个全新的绘图上下文中。这就是UIGraphicsPushContext的功能。创建完位图后,再将你的旧上下文出栈。而这就是UIGraphicsPopContext的功能。这种情况只会在要使用UIKit在新的位图上下文中绘图时才会发生。只要你使用的是Core Graphics函数,就不需要去执行上下文入栈和出栈,因为Core Graphics函数将上下文视作参数。

转自:http://blog.csdn.net/nlforever/article/details/11835725

相关文章

  • iOS-绘图Quartz 2D 贝赛尔曲线相关

    本篇涵盖iOS中绘图上下文,截屏相关等. 1.玩转iOS中的绘图(Quartz 2D基础篇)2.分享iOS中常用的...

  • iOS绘图上下文的理解

    在调用drawRect:方法之前,绘图系统创建了一个图形上下文(CGContext)。上下文包括大量信息,比如画笔...

  • Quartz2D

    学习链接 IOS CGContext用法 Quartz2D 绘图 画线的三个步骤: 获取上下文 绘图 渲染 参考链...

  • CoreGrapics总结(1)

    (绘图方法有UIkit框架下的和Core Graphics) 1上下文 在iOS总的到上下文的有3个地方drawR...

  • iOS绘图(一):Quartz2D和图形上下文

    本章先来介绍一下iOS绘图中概念方面的一些东西,方便理解后面的知识。 这章的内容有: Quartz2D 图形上下文...

  • 高级绘图要领 - 绘制上下文(一)

    目录 序言 绘制上下文是指在你的应用上通过一个虚拟的画布进行绘制。在本章,你需要复习iOS绘图的核心技术。深入理解...

  • iOS绘图 - UIImage的一些简单操作

    在iOS绘图 - 基础篇中我们知道有一种获取上下文的方法是UIGraphicsBeginImageContextW...

  • 初识canvas(一)

    api 1.getContext() 要在这块画布(canvas)上绘图,需要取得绘图上下文。而取得绘图上下文对象...

  • Quartz 2D编程指南-03图形上下文

    图形上下文表示绘图目标。它包含绘图参数和绘图系统执行任何后续绘图命令所需的所有特定于设备的信息。图形上下文定义了基...

  • Graphics Contexts

    图形上下文表示绘图目的地。它包含绘图系统执行任何后续绘图命令所需的绘图参数和所有特定于设备的信息。图形上下文定义基...

网友评论

      本文标题: iOS绘图上下文的理解

      本文链接:https://www.haomeiwen.com/subject/ayzzfxtx.html