1

我希望能够保存CGContextRef调用后的调用UIGraphicsBeginImageContext,以便稍后在后台线程中使用它,该线程负责每 1/25 秒发送一次图像。

UIGraphicsBeginImageContext每次从后台线程调用选择器时我遇到的问题是创建上下文需要时间,而且我无法每 1/25 秒绘制一次图像。

我尝试使用CGBitmapContextCreate,但我没有得到与由UIGraphicsBeginImageContext()-->[image drawInRect]

我尝试在它之后调用UIGraphicsBeginImageContextviewDidLoad保存CGContextRef它,以便我可以在以后的调用中使用它,但是上下文以某种方式被释放,所以我CGContextDrawImage: invalid context 0x0在调用后立即得到“”错误[image drawInRect] ,而我从中得到的图像UIGraphicsGetImageFromCurrentImageContext()null之后的。

是否可以在应用程序的整个生命周期中开始使用单个图像上下文?如果是,如何?否则请告知是否还有其他选项可以保存我的上下文。

4

1 回答 1

0

首先,在一个线程上创建图形上下文然后将其传递给不同的线程是一个令人困惑的问题。首先在后台线程上创建图形上下文。

其次,由于UIGraphicsBeginImageContext操纵 UIKit 的图形上下文堆栈,因此尝试保存CGContext它创建的并在以后使用它会令人困惑(大概在您调用之后UIGraphicsEndImageContext)。如果您保留CGContextRef;它可能会起作用 我没试过。

你应该做的只是直接使用 Core Graphics APIs。使用 创建您的上下文,使用从中CGBitmapContextCreate获取 a ,并在必要时将其转换为使用。CGImageCGBitmapContextCreateImageCGImageUIImage+[UIImage imageWithCGImage:]

于 2012-09-20T05:53:31.247 回答