11

PictureBox コントロールの画像がウィンドウのサイズに応じて自動的にサイズを調整するようにしようとしていますが、縦横比は維持されます。これまでのところ、 に設定SizeModeするだけStretchImageで、PictureBox コントロール全体に合わせて画像が引き伸ばされます。これは、私が望むものではないアスペクト比を無視します。

アスペクト比を維持することは可能ですが、フォームのサイズが変化したときに動的に移動できる最大値まで画像を引き延ばすことはできますか? これを行うことは可能ですか?ウィンドウのサイズが変更されるたびにメモリ内の画像を再作成できると思いますが、これは悪い考えのようです。

4

4 に答える 4

16

の効果だと思いますPictureBoxSizeMode.Zoom。ドキュメントには次のように記載されています。

画像のサイズは、サイズの比率を維持して拡大または縮小されます。

これをPictureBox.SizeModeプロパティに設定します。その関数のドキュメントの「備考」セクションにも次のように記載されています。

Zoom 値を使用すると、PictureBox に合わせて画像が拡大または縮小されます。ただし、元の縦横比は維持されます。

もちろん、PictureBox.SizeModeデザイナーの [プロパティ] ウィンドウまたはコード (フォームのコンストラクターなど) でプロパティを設定できます。

myPictureBox.SizeMode = PictureBoxSizeMode.Zoom;

これが思いどおりにならない場合は、いつでもサイズ変更ロジックを自分で実装できます。あなたの懸念は、コントロールのサイズが変更されるたびにメモリ内にイメージを再作成することは「悪い考えのように思える」ということですが、なぜそのように見えるのかわかりません。唯一の問題は、古いBitmap. これらのオブジェクトには、解放する必要がある管理されていないリソースが含まれているだけでなく、それらをリークさせてしまうと、メモリに極度の負荷がかかり始めます。

別の方法として、一時的なビットマップの作成を回避するために、おそらく PictureBox コントロールが内部で行うことを行い、Graphics.DrawImageメソッドを使用してストレッチを処理することができます。長方形を渡すと、長方形の内側に収まるように画像が自動的にスケーリングされます。

于 2013-03-20T21:24:33.690 に答える
2

'SizeMode' を に変更しZoomます。名前が示すように、「StretchImage」は画像ファイルに合わせてストレッチします。簡単な消去法でも同じ結果が得られます。

于 2013-03-20T21:24:17.047 に答える
2

PictureBoxSizeModeドキュメントによるとPictureBoxSizeMode.Zoom、画像のアスペクト比を維持するように指定できます。画像のどの部分も画像ボックスからはみ出すことなく、できるだけ大きくズームします。

また、Dockプロパティ(設定DockStyle.Fill) を操作して、ピクチャ ボックスのサイズをコンテナのサイズに変更することもできます。

于 2013-03-20T21:24:28.853 に答える
-4

Web ブラウザー コントロールに追加できます。Ctrl キーとマウス ボタンを使用して、好きなだけズームインできます。

于 2016-12-07T21:17:42.050 に答える