【问题标题】:CGContext - is there a way to reset the current contextCGContext - 有没有办法重置当前上下文
【发布时间】:2009-02-04 01:46:22
【问题描述】:

在我的 iPhone 项目中,我有一个 UIView,我在其中实现了 drawRect 方法:

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();

在该方法中,我使用此上下文绘制了一大堆线条、图像和文本。问题是当我重新使用这个视图时,上下文不会被重置。有没有我可以调用的方法以某种方式重置上下文?

【问题讨论】:

  • “重置上下文”是什么意思?
  • 我的意思是,当我的视图再次绘制自己时,一切都被破坏了,好像它记得我上次将某些东西移动到哪里

标签: iphone cocoa-touch core-graphics


【解决方案1】:

您可能想查看 CGContextSaveGState(context) 和 CGContextRestoreGState(context)。它们会让你推送和弹出上下文的当前状态。

如果您的视图被“损坏”,请检查您的视图的 contentMode 设置。

【讨论】:

    【解决方案2】:

    你也可以使用CGContextClearRect(context, CGRectMake(0, 0, width, height));

    【讨论】:

    • 这会用清晰的颜色填充上下文,但不会重置任何上下文状态信息(例如剪辑等)
    猜你喜欢
    • 2017-05-10
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多