我正在为 MKMapOverlayView 创建的 CGContext 中执行一些 CG 绘图操作。绘制到我的上下文后,我创建了一个图像并将其粘贴到 MapKit 提供的上下文中。
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
CGColorSpaceRef colorRef = CGColorSpaceCreateDeviceRGB();
CGContextRef myContext = CGBitmapContextCreate(NULL, kTileSize, kTileSize, 8, 0, colorRef, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colorRef);
CGContextSetAllowsAntialiasing(myContext, TRUE);
//...cut out drawing operations...
CGImageRef image = CGBitmapContextCreateImage(myContext);
CGContextDrawImage(context, [self rectForMapRect:mapRect], image);
CGImageRelease(image);
CGContextRelease(myContext);
}
有没有一种方法可以简单地复制myContext
而context
无需创建图像?
我意识到你们中的一些人会说“为什么不直接绘制到 MapKit 提供的上下文中”。不幸的是,我们在context
直接渲染时遇到了绘图故障。Apple 目前正在为我们调查此问题,但与此同时,我们需要找到解决方法。我在上面介绍的这个解决方法是我的“最佳”镜头,但它有点慢。
PS我已经开始赏金,因为我也在在这里寻找答案。具体来说,我的目标是 OS X。所以答案应该在那里工作。OP 正在寻找 iOS 上的答案。