Копирование CGContext в другой CGContext

Я выполняю некоторые операции рисования CG в CGContext, который я создал для MKMapOverlayView. После рисования в своем контексте я создаю изображение и вставляю его в контекст, предоставленный 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 в контекст без необходимости создавать image?

Я понимаю, что некоторые из вас скажут: «Почему бы просто не рисовать прямо в контексте, который предоставляет MapKit». К сожалению, при рендеринге в контекст напрямую возникает сбой при рисовании. Apple в настоящее время изучает эту проблему для нас, но пока что нам нужно найти обходной путь. Этот обходной путь, который я представил выше, - мой "лучший" вариант, но он немного медленный.

P.S. Я начал награждение, так как я тоже ищу ответ здесь. В частности, я нацелен на OS X. Так что ответ должен работать там. ОП искал ответ на iOS.

10
задан qwerty_so 13 January 2017 в 11:05
поделиться