Я уже второй день сижу в Интернете и, видимо, что-то упускаю. Я пытаюсь добиться эффекта перекоса для NSImageView
. Я нашел этот вопрос о переполнении стека, что говорит о том, что это возможно. Кроме того, в Документация Apple предполагает, что NSAffineTransform с NSAffineTransformStruct
разрешен.
Тем не менее: это не работает. Единственное, что я могу сделать, это NSAffineTransform rotateByDegrees
, NSAffineTransform scaleXBy:foo yBy:foo
. Все остальное не дает видимого эффекта. Я не получаю никаких ошибок, просто нет результата.
Итак, мой вопрос: не разрешено ли неравномерное масштабирование с использованием NSAffineTransform
для приложений на OSX? И если да, то почему Xcode (по крайней мере) не предупреждает меня об этом? Или я что-то здесь упускаю (например, ошибка программирования)?
Любая помощь будет оценена по достоинству!
Код, который я использую:
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
NSAffineTransform *rotate = [[NSAffineTransform alloc] init];
NSGraphicsContext *context = [NSGraphicsContext currentContext];
[context saveGraphicsState];
[currentImage lockFocus];
[rotate setTransformStruct:currentTransForm]; //This is filled in another routine
[rotate concat];
/* Your drawing code [NSImage drawAtPoint....]for the image goes here
Also, if you need to lock focus when drawing, do it here. */
CGRect imageRect = dirtyRect;
[self.image drawInRect:imageRect fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0];
[self.image unlockFocus];
[context restoreGraphicsState];
}