我花了整个晚上来解决这个问题,但我仍然对此很生气
这是关于我的代码的图片: http://i284.photobucket.com/albums/ll15/hisinhvien/Screenshot2011-03-03at112716PM.png (抱歉,新用户无法发布图片)
首先,我重写了“@interface Component : UIView”的“drawRect”,然后我在其中放入了一些代码来测试推送和弹出图形上下文,但它不起作用 按照图片所示:首先我选择了绿色,然后我推送了上下文并选择了蓝色,然后绘制了一个矩形,之后我将上下文弹出,但最后一个矩形仍然是蓝色...?
这是我的源代码:http://www.mediafire.com/?aakgqw92flc808o 很简单,但是错了...@@
最佳答案
使用CGContextSaveGState和 CGContextRestoreGState .
有关保存内容的文档引用:
讨论
每个图形上下文都维护一个图形状态堆栈。请注意,并非当前绘图环境的所有方面都是图形状态的元素。例如,当前路径不被视为图形状态的一部分,因此当您调用 CGContextSaveGState 函数时不会保存当前路径。保存的图形状态参数有:
- CTM(当前变换矩阵)
- 剪辑区域
- 图像插值质量
- 线宽
- 线路连接
- 斜接限制
- 线帽
- 虚线
- 平整度
- 应该抗锯齿
- 渲染意图
- 填充色彩空间
- 描边颜色空间
- 填充颜色
- 描边颜色
- 阿尔法值
- 字体
- 字体大小
- 字符间距
- 文本绘制模式
- 阴影参数
- 模式阶段
- 字体平滑参数
- 混合模式
在drawRect:方法开始时保存状态并在drawRect:方法结束时调用恢复也是一件好事。您不是在这里创建自己的上下文,您只是使用已经创建的上下文,并且应该保留它的状态。换句话说,使用它,但最后保持相同的状态。
关于iphone - UIGraphicsPopContext() 的问题...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191382/