在Cocoa中使用NSAffineTransform无法实现NSImageView非均匀缩放?

时间:2016-09-25 05:16:20

标签: objective-c xcode macos cocoa nsimageview

我现在已经浏览互联网两天了,显然我错过了一些东西。我试图为NSImageView实现偏斜效果。我发现堆栈溢出this question,这表明它是可能的。此外,在Apple Documentation中,它表明允许使用NSAffineTransformStruct的NSAffineTransform。

尽管如此:它不起作用。我唯一能做的就是NSAffineTransform rotateByDegreesNSAffineTransform scaleXBy:foo yBy:foo。其他一切都没有显示任何明显的效果。我没有得到任何错误,只是没有结果。

所以我的问题是:OSX上的应用程序不允许使用NSAffineTransform进行非均匀缩放吗?如果是这样,为什么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];
} 

0 个答案:

没有答案