の効果だと思いますPictureBoxSizeMode.Zoom
。ドキュメントには次のように記載されています。
画像のサイズは、サイズの比率を維持して拡大または縮小されます。
これをPictureBox.SizeMode
プロパティに設定します。その関数のドキュメントの「備考」セクションにも次のように記載されています。
Zoom 値を使用すると、PictureBox に合わせて画像が拡大または縮小されます。ただし、元の縦横比は維持されます。
もちろん、PictureBox.SizeMode
デザイナーの [プロパティ] ウィンドウまたはコード (フォームのコンストラクターなど) でプロパティを設定できます。
myPictureBox.SizeMode = PictureBoxSizeMode.Zoom;
これが思いどおりにならない場合は、いつでもサイズ変更ロジックを自分で実装できます。あなたの懸念は、コントロールのサイズが変更されるたびにメモリ内にイメージを再作成することは「悪い考えのように思える」ということですが、なぜそのように見えるのかわかりません。唯一の問題は、古いBitmap
. これらのオブジェクトには、解放する必要がある管理されていないリソースが含まれているだけでなく、それらをリークさせてしまうと、メモリに極度の負荷がかかり始めます。
別の方法として、一時的なビットマップの作成を回避するために、おそらく PictureBox コントロールが内部で行うことを行い、Graphics.DrawImage
メソッドを使用してストレッチを処理することができます。長方形を渡すと、長方形の内側に収まるように画像が自動的にスケーリングされます。