我在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];
答案 0 :(得分:1)
我遇到了同样的问题。我希望缩放图像以填充,但保持原始图像的纵横比。奇怪的是,这并不像看起来那么简单,并且没有开箱即用的NSImageView。我希望NSImageView在使用superview(s)调整大小时能够很好地扩展。我创建了一个可以在github上找到的插入式NSImageView子类:KPCScaleToFillNSImageView
答案 1 :(得分:0)
我不认为这样的东西是内置的;你可能不得不自己改造图像。
虽然相对简单;您可以看到示例实现here。
答案 2 :(得分: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];