Обрезка NSImage, чтобы сделать увеличенную копию, инвертирует ось Y
Я пытаюсь поэкспериментировать с изображением и проектирую окно с двумя видами: большим и небольшим, которое должно отображать увеличенное изображение (5-кратное увеличение), полученное из прямоугольника вокруг позиции курсора на основном изображении. Для этого я делаю "снимок экрана", чтобы создать растровое представление изображения, затем обрезаю его, чтобы получить информацию, которая будет отображаться в увеличенном виде изображения. Метод updateZoomedImage (вызов из mouseMoved: метод) имеет вид:
- (void) updateZoomImage: (NSEvent *) event
{
NSPoint center = [self convertPoint:[event locationInWindow] fromView:nil];
CGRect box = NSMakeRect(center.x-10.0, center.y-10, 20.0, 20.0);
CGImageSourceRef sourceImage = CGImageSourceCreateWithData((CFDataRef)[self.image TIFFRepresentation], NULL);
CGImageRef maskRef = CGImageSourceCreateImageAtIndex(sourceImage, 0, NULL);
CGImageRef croppedImage = CGImageCreateWithImageInRect(maskRef, box);
NSImage *zoom = [[NSImage alloc] initWithCGImage:croppedImage size:NSMakeSize(100., 100.)];
self.manager.zoomImage.image = zoom;
}
Я заметил одну проблему: увеличенное изображение не показывает правильную рамку вокруг положения мыши. если я изменю расчет коробки как:
CGRect box = NSMakeRect(center.x-10.0, self.frame.size.height - center.y-10., 20.0, 20.0);
Увеличенное изображение будет правильным. Но один вопрос остается без ответа: как этот процесс создания растрового изображения из NSImage может изменить направление оси Y?