2012-07-05 60 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