2

我在正确缩放 nsimageview 中的图像时遇到问题。加载图像时会发生什么,它不会填满整个 nsimageview。我使用了 NSScaleToFit,它完全拉伸了图像。由于我不知道照片的尺寸(它会根据使用的图像而变化),因此我无法将 nsimageview 设置为某个尺寸并将其留在那里。 我想要做的是按比例用图像填充整个 nsimageview,即使某些图像被截断。

这是我正在使用的代码:

NSString *image_path = [applicationSupportDirectory stringByAppendingPathComponent:desktop_name];
        NSImage *imageFromBundle = [[NSImage alloc] initWithContentsOfFile:image_path];
        [ViewImage setImageScaling:NSScaleProportionally];
        [ViewImage setImage: imageFromBundle];
4

3 回答 3

1

我有同样的问题。我想让图像缩放以填充但保持原始图像的纵横比。奇怪的是,这并不像看起来那么简单,并且没有 NSImageView 开箱即用。我希望 NSImageView 在使用超级视图调整大小时很好地缩放。我做了一个插入式 NSImageView 子类,你可以在 github 上找到:KPCScaleToFillNSImageView

于 2014-05-04T17:15:06.027 回答
0

我不认为这样的东西是内置的。您可能必须自己转换图像。

不过,它相对简单;你可以在这里看到一个示例实现。

于 2012-07-05T16:20:47.700 回答
0

我制定了自己的解决方案,因为内置的解决方案不起作用。

NSRect frame = [MyWindow frame];

   if (abs(windowHeight-[imageFromBundle size].width) > abs(windowWidth-[imageFromBundle size].height)) {
        frame.size.height = windowWidth;
        frame.size.width = 1+windowWidth*(([imageFromBundle size].width/[imageFromBundle size].height-(10*pow([imageFromBundle size].width, 2))/(pow([imageFromBundle size].height, 2)* windowHeight)));
    } else {
        frame.size.width = windowHeight;
        frame.size.height = ((windowHeight/[imageFromBundle size].width)*[imageFromBundle size].height);
    }

    [MyWindow setFrame: frame
             display: YES
             animate: YES];
于 2012-07-30T15:28:18.053 回答