iOS“当前图形上下文” - 那是什么

时间:2011-01-23 04:59:17

标签: iphone ios

当我绘制线条和形状等时,我会在iOS中获得“当前图形上下文”。

究竟什么是“当前图形上下文” - 我正在寻找30,000英尺的描述。

现在我只是复制并粘贴UI代码,而不是确切地知道它在做什么。

3 个答案:

答案 0 :(得分:16)

图形上下文是存储有关绘图状态的信息的位置。这包括填充颜色,笔触颜色,线宽,线条图案,缠绕规则,蒙版,当前路径,透明层,变换,文本变换等。使用CoreGraphics调用时,您可以指定要用于每个函数的上下文。这意味着您可以一次使用多个上下文,但通常只使用一个上下文。在UIKit层,有一个“当前”图形上下文的概念,它是所有UIKit级绘图调用(例如-[UIColor set]UIBezierPath绘图)使用的图形上下文。当前上下文存储在一堆上下文中,因此您可以为某些绘图创建新上下文,然后在完成后,将恢复上一个上下文。通常,您可以在CALayer显示相关方法中的-[UIView drawRect:]内免费获取上下文,但不是。

过去,“当前”上下文是应用程序范围的全局状态,因此在主线程之外触摸是不安全的。从iOS 4.0开始(我相信),这成为一个线程本地状态,UIKit级别的绘图方法在后台线程上使用变得安全。

答案 1 :(得分:15)

操作系统需要一个保存信息的位置,例如绘图状态,您不希望在每个CG绘图命令中指定这些信息,例如要绘制的位图或视图,要使用的比例或其他变换,您指定的最后一种颜色等。

上下文告诉每个CG调用在哪里找到当前绘图调用的所有“东西”。为完全相同的绘图调用提供不同的上下文,并且该调用可能在完全不同的视图中绘制到不同的位图,具有不同的颜色,不同的比例等。

答案 2 :(得分:1)

基本上它是一个平台(iOS,Android,JavaME和许多其他平台)中的一个类,可以访问为该平台提供的所有绘图/显示功能。当然,它对于不同的平台有所不同,但这是30,000英尺的描述:)