2012-07-05 52 views
2

我在正确地在nsimageview中缩放图像时出现问题。会发生什么情况是图像加载时,它不会填满整个nsimageview。我使用了NSScaleToFit,它完全拉伸了图像。由于我不知道照片的尺寸(它发生了变化,取决于使用的图像),我无法将nsimageview设置为一个尺寸并将其留在那里。 我想要做的是按照比例填充整个nsimageview,即使部分图像被切掉。NSImageView setImageScaling notWorkingCorrectly

这是我使用的代码:

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

回答

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]; 
0

我不认为这样的事情是内置的;你可能不得不自己改变图像。

虽然这是相对简单的;你可以看到一个示例实现here

+0

谢谢!这完全是我想要的。但是,我认为我没有正确实施它。 'NSImage * imageFromBundle = [[NSImage alloc] initWithContentsOfFile:image_path];您可以使用NSImage * thumbnail = [imageFromBundle imageByScalingProportionallyToSize:NSMakeSize(500,350)]; \t \t [ViewImage setImage:thumbnail];' – alexy13 2012-07-05 16:35:49

+0

图像出现,但imageByScalingProperotionallyToSize似乎没有任何效果。我的图像视图是350x350px – alexy13 2012-07-05 16:36:33

+0

实际上,我用很好的旧笔和纸来实现缩放算法和居中算法(因为链接的代码不起作用:() – alexy13 2012-07-16 03:05:31

1

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