Генерировать масштабированное изображение с экрана -NSView

У меня есть последовательность NSViews вне экрана в приложении Cocoa, которые используются для составления PDF-файла для печати. Представления не находятся в NSWindow или видны каким-либо образом.

Я хотел бы иметь возможность генерировать миниатюрные изображения этого вида точно так, как будет выглядеть PDF, но уменьшенный, чтобы соответствовать определенному размеру пикселя (, ограниченному шириной или высотой ). Это должно быть как можно быстрее, поэтому я хотел бы избежать рендеринга в PDF с последующим преобразованием в растр и масштабированием. -Я хотел бы сразу перейти к растру.

В данный момент занимаюсь:

NSBitmapImageRep *bitmapImageRep = [pageView bitmapImageRepForCachingDisplayInRect:pageView.bounds];
[pageView cacheDisplayInRect:pageView.bounds toBitmapImageRep:bitmapImageRep];
NSImage *image = [[NSImage alloc] initWithSize:bitmapImageRep.size];
[image addRepresentation:bitmapImageRep];

Этот подход работает хорошо, но я не могу понять, как применить масштабирование к NSView перед рендерингом bitmapImageRep. Я хочу избежать использования scaleUnitSquareToSize, потому что, насколько я понимаю, это изменяет только границы, а не кадр NSView.

Любые предложения о том, как лучше всего это сделать?

6
задан tomtaylor 7 July 2012 в 17:45
поделиться