它说setFlipped
应该替换为drawInRect
- 但在查看了几个示例和许多失败的尝试后,我无法使用传递的参数来翻转我的图像进入drawInRect
是否有人有经验,或知道如何使用drawInRect
方法翻转图像?或者有不同的方式吗?
提前致谢!
答案 0 :(得分:3)
弃写说明的编写期望-setFlipped:
用于补偿绘制正面向上翻转视图。这与你的用例相对应,你似乎试图将其颠倒,所以解释没有帮助。
要绘制颠倒,您应使用NSAffineTransform
调整图形上下文的变换。文档讨论了creating a flip transform关于整个视图的翻转,但是你必须计算相对于翻转坐标系的绘制位置。我认为将原点转换为目标矩形的左上角更容易,将Y方向缩放-1,然后绘制(0,0)。
[NSGraphicsContext saveGraphicsState];
NSAffineTransform* xform = [NSAffineTransform transform];
[xform translateXBy:NSMaxX(destRect) yBy:NSMinY(destRect)];
[xform scaleXBy:1 yBy:-1];
[xform concat];
[image drawInRect:NSMakeRect(0, 0, NSWidth(destRect), NSHeight(destRect))];
[NSGraphicsContext restoreGraphicsState];
答案 1 :(得分:1)
我知道这是一个老问题,但我无法使用上述答案,这是我的解决方案:
NSImage *image...
[image drawInRect:destRect fromRect:NSZeroRect operation:NSCompositeSourceIn fraction:1.0 respectFlipped:YES hints:nil];
希望这可以帮助某人:)