29

C#での画像スケーリングに問題がありました。

私は与えられたサイズの絵箱を持っています:例えば幅=800px高さ=600px

その画像ボックスに、小さい画像(400x400)と大きい画像(800+ x 600+)のさまざまな画像を読み込んでいます。

ボックスに収まらない場合、画像のサイズが変更されます。ただし、これらは常にPictureBoxの最大幅と高さにサイズ変更されます。したがって、アスペクト比は破壊されます。

誰かが問題を特定/修正するのを手伝ってもらえますか?

クラス:

Form1.cs

ImageHandling.cs(コメントアウト)

ImageUtilities.cs

例:

問題1:私のバージョン
ここに画像の説明を入力してください

vs元のソースここに画像の説明を入力してください

問題2:
私のバージョン
ここに画像の説明を入力してください

vs元のソース
ここに画像の説明を入力してください

どのように私はそれが欲しいですか:

解決
ここに画像の説明を入力してください

4

2 に答える 2

58
this.PictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

そのプロパティをPictureBoxに設定すると、画像のサイズは、サイズ比を維持しながらPictureBoxに合わせて拡大または縮小されます。

詳細については、http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.sizemode.aspxをご覧ください。

于 2012-09-28T19:40:48.327 に答える
0

PictureBoxのresizeメソッドでSizeModeをリセ​​ットすることでこれを処理しました。

これは基本的に上記と同じ答えですが、フォーマットがはるかに優れています。

private void ScaleImage()
{
  if (pbInfo.Image == null)
    return;

  if (pbInfo.Image.Width > pbInfo.Width || pbInfo.Image.Height > pbInfo.Height)
    pbInfo.SizeMode = PictureBoxSizeMode.Zoom;
  else
    pbInfo.SizeMode = PictureBoxSizeMode.Normal;
}
于 2022-01-07T16:46:06.867 に答える