Windows11の教科書

ウィンドウズ11やスマホ・アプリで困ったことを調べたブログ

ウィンドウズ10やアプリで困ったことを調べたブログです。

スポンサーリンク


【Visual Studio】C#でPictureBoxの使い方

Visual StudioのC#やVisualBasicで画像を扱うのに便利なツールがPictureBoxです。

ここではPictureBoxの使い方を紹介していきます。

PictureBoxとは?

画像の表示のために用意されています。

 

bmp、PNG、JPEGなどの画像ファイルをロードするだけでなく、回転したりサイズにアジャストさせて表示させることができます。

 

保存ルーチンもあるので、PictureBox上で加工してそれをファイルに出力するというときにも便利です。

 

PictureBoxの使い方

画像ファイルを表示する

ツールボックスのPictureBoxを選んでフォーム上にドラッグして配置します。

f:id:apicode:20190904163549p:plain

 

配置したPictureBoxのプロパティでImageが画像データとなります。

f:id:apicode:20210128150113p:plain

 

Imageプロパティで「...」を選ぶとリソース選択が出てきます。

f:id:apicode:20210128150116p:plain

 

「ローカルリソース>インポート」でダイアログから画像を選択します。

JPEGやGIF、PNG、BMPなどに対応しています。

f:id:apicode:20210128150119p:plain

 

これでPictureBox内に画像が表示されました。

f:id:apicode:20210128150252p:plain

 

 

動画を表示する

OpenCV、aForgeなどのライブラリを使えば動画をC#で取り扱うことができます。

動画の表示部分としてPictureBoxを使うこともできます。

詳しくは以下参照ください。

www.kyoukasho.net

 

画像をフィットさせる

画像を指定しただけでは、元のサイズのままです。

SizeModeプロパティを「StretchImage」にすると、...

f:id:apicode:20210128150407p:plain

 

配置したPictureBoxのサイズにあわせて画像を表示します。

f:id:apicode:20210128150409p:plain

 

サイズはそのままで中心部から画像を置くには「CenterImage」にセットします。

f:id:apicode:20210128150512p:plain

 

縦横比率をキープした状態でPictureBoxにあわせるには「Zoom」を選びます。

f:id:apicode:20210128150626p:plain

 

プログラムで画像を表示する

ボタンを押すとPictureBoxに画像を表示するプログラムを書くには、

 

private void Button1_Click(object sender, EventArgs e)
{
 pictureBox1.ImageLocation = @"C:\_work/face1.bmp";
}

 

のように書きます。「C:\_work/face1.bmp」が画像のパスです。

成功すると、このように画像ファイルがPictureBoxとして設定した場所に表示されるはずです。

f:id:apicode:20190904164109p:plain

 

上記の方法ではJPGやPNGなどのフォーマットの画像は表示できません。

 

そこで以下のような方法をとります。

システムで用意されているイメージ用のオブジェクトにいったんPNGを読み込んで、それをPictureBoxのイメージとしてセットするという方法です。

 

private void Button1_Click(object sender, EventArgs e)
{

 System.Drawing.Image img = System.Drawing.Image.FromFile(@"C:\_work/face1.png");

 PictureBox1.Image = img;

}

 

画像の回転、反転

Bitmapオブジェクトは回転や反転用の機能もがあります。

Bitmap bmp = new Bitmap("sample.bmp");
bmp.RotateFlip(RotateFlipType.Rotate180FlipX);
PictureBox1.Image = bmp;

 

指定するときに「RotateNoneFlipY」なら垂直反転、「Rotate180FlipNone」なら180度回転で反転はナシとなります。

 

画像を保存する

PictureBoxでハンドリングするImageオブジェクトの書き出し機能を利用します。

 

String filename="test.png";

PictureBox1.Image.Save(filename, System.Drawing.Imaging.ImageFormat.Png);

 

 

PNG形式での書き出しはこのようになります。

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ