.NET TIPS

スクロールバー付きでPictureBoxコントロールに画像に表示するには?[C#、VB]

デジタルアドバンテージ 遠藤 孝信
2008/01/24

 PictureBoxコントロール(System.Windows.Forms名前空間)に画像を表示する場合、特に画像がPictureBoxコントロールのサイズよりも大きい場合には、PictureBoxコントロールのSizeModeプロパティにより以下のような表示方法がある。

SizeModeプロパティの値 表示結果
AutoSize 画像のサイズに従ってPictureBoxコントロールのサイズが(左上隅を基点にして)変化する
CenterImage 中央部分のみを表示
Normal 左上隅部分のみを表示
StretchImage PictureBoxコントロールのサイズに縮小して全体を表示
Zoom 縦横比を維持したまま縮小して全体を表示
PictureBoxコントロールのSizeModeプロパティに設定可能な値
ここでは画像がPictureBoxコントロールのサイズよりも大きい場合の表示結果を示している。なお、これらの値はPictureBoxSizeMode列挙体(System.Windows.Forms名前空間)で定義されている。

 このようにいくつかの表示方法が用意されているが、固定領域内にスクロールバー付きで画像を表示するような機能はPictureBoxコントロールには用意されていない。本稿ではこれを実現するための簡単な方法を紹介する。

パネルを使ったPictureBoxコントロールのスクロール

 PictureBoxコントロールによりスクロールバー付きで画像を表示するには、PictureBoxコントロールをPanelコントロールと組み合わせることにより可能だ。以下にVisual Studio利用時の手順を示す。

画像を表示したい部分にPanelコントロールを配置してサイズを調整する

Panelコントロールの中にPictureBoxコントロールを配置する

 これによりPictureBoxコントロールはPanelコントロールの子コントロールとなる。このためPictureBoxコントロールはPanelコントロールの領域部分にしか表示されなくなる(Panelコントロールにより表示がクリッピングされる)。

PictureBoxコントロールのLocationプロパティを「(0, 0)」に設定する。

PictureBoxコントロールのSizeModeプロパティを「AutoSize」に設定する

 これにより画像のサイズに合わせてPictureBoxコントロールのサイズが変化するが、 に記述したように、Panelコントロール以外の部分にはPictureBoxコントロールは表示されない。

PanelコントロールのAutoScrollプロパティを「True」に設定する

 これによりPanelコントロールの中に配置されたコントロール(本稿の場合ではPictureBoxコントロール)がPanelコントロールのサイズよりも大きい場合に、自動的にスクロールバーが表示されるようになる。

 次の画面は以上の手順によりPictureBoxコントロールとPanelコントロールと配置したところだ(Visual Studio 2005)。


Panelコントロール内に配置したPictureBoxコントロール
PanelコントロールのAutoScrollプロパティを「True」に、PictureBoxコントロールのSizeModeプロパティを「AutoSize」に設定している。

 この時点ですでにスクロールバーが表示され、実際に画像(=PictureBoxコントロール)をスクロールさせることができる。End of Article

カテゴリ:Windowsフォーム 処理対象:PictureBoxコントロール
カテゴリ:Windowsフォーム 処理対象:Panelコントロール
使用ライブラリ:PictureBoxSizeMode列挙体(System.Windows.Forms名前空間)

この記事と関連性の高い別の.NET TIPS
PictureBoxコントロールにグラフィックを描画するには?
Windowsフォームで簡単に画像を表示するには?
PictureBoxコントロールにWeb画像を表示するには?
[ASP.NET]DataGridコントロールにスクロールバーを付けるには?
PictureBoxコントロール上に文字を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間