使NSView可调整大小而不调整其中包含的图像

时间:2010-11-15 08:39:34

标签: objective-c cocoa xcode macos

我有一个NSView,它根据窗口的大小自动调整大小。我加载图像并在NSView中显示它们,但我不希望NSView尝试“挤压”它们以适应NSView的大小。我想要的是让图像加载到NSView 100%,然后调整窗口大小以显示更多的图像,而不是缩放它以适应。我可能想稍后修改它以允许缩放和平移。

这就是我的所作所为:

-(void)drawRect:(NSRect)rect
{
    NSRect theRect = NSMakeRect((rect.size.width/2)-(([theImage pixelsWide]/2)/2),
                                (rect.size.height/2)-(([theImage pixelsHigh]/2)/2),
                                [theImage pixelsWide]/2,
                                [theImage pixelsHigh]/2);

    [theImage drawInRect:theRect];
}

1 个答案:

答案 0 :(得分:2)

您是如何首先显示图像的?您要么使用NSImageView,要么自己在-drawRect中将图像绘制到自定义视图中:。

如果您正在使用图像视图,请查看其自动调整设置(其几何图形作为其父视图的几何图形更改)及其图像缩放属性(图像视图的几何图形更改后的图像大小和比率。

如果是自定义视图,则将图像绘制到您喜欢的任何矩形中,而不是视图的整个边界。