Как перевернуть координаты при рисовании в контексте?
Я создаю контекст из UIImage, а затем я вхожу в него с
CGContextDrawImage(bitmapContext,
CGRectMake(0, 0,
originalImage.size.width,
originalImage.size.height),
oImageRef);
изображение отображается вверх ногами из-за перевернутой системы координат в кварце. Как я могу это исправить?
2 ответов
вы должны иметь возможность преобразовать контекст, используя что-то подобное следующему:
CGContextSaveGState(bitmapContext);
CGContextTranslateCTM(bitmapContext, 0.0f, originalImage.size.height);
CGContextScaleCTM(bitmapContext, 1.0f, -1.0f);
// Draw here
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), oImageRef);
CGContextRestoreGState(bitmapContext);
перевод может быть не нужен для рисования изображения, но мне он был нужен, когда я хотел нарисовать перевернутый текст. Если это единственное, что вы будете делать в контексте, вы также можете избавиться от вызовов для сохранения и восстановления состояния контекста.
бред решение как расширение в Swift 3:
extension CGContext {
func drawFlipped(image: CGImage, rect: CGRect) {
saveGState()
translateBy(x: 0, y: rect.height)
scaleBy(x: 1, y: -1)
draw(image, in: rect)
restoreGState()
}
}