Обрезка 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?

0 ответов

Другие вопросы по тегам