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のスケールを適切に調整したかったのです。githubにあるドロップインNSImageViewサブクラスを作成しました:KPCScaleToFillNSImageView

于 2014-05-04T17:15:06.027 に答える
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 に答える
0

このようなものは組み込まれているとは思いません。おそらく自分で画像を変換する必要があります。

ただし、これは比較的簡単です。ここで実装例を見ることができます。

于 2012-07-05T16:20:47.700 に答える