クリエイターの教科書

ChatGPT, Stable Diffusion, Visual Studio, Excelなど教科書

【Visual Studioの教科書】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

 

 

プログラミング

画像を表示する

「ImageLocation 」というプロパティを使うと、表示させる画像ファイルの場所を指定できます。

 

ボタンを押すと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

 

読み込んだ画像をPictureBoxに描画

「ImageLocation 」を使うと、その画像だけが描画されます。

 

いろんな画像をロードして自由な場所に転送して描くには、ビットマップとしてメモリ上に読み込んで、それを「DrawImage」で描画する方法があります。

 

Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(canvas);

Bitmap bitmap = new Bitmap("_green.png");
g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
g.Dispose();
pictureBox1.Image = canvas;

 

読み込んだ画像の背景を透過

読み込んだビットマップで「MakeTransparent」で透過色を設定すると、背景を透過させた状態で表示できます。

Bitmap bitmap = new Bitmap("_green.png");
Color keyColor = Color.FromArgb(255, 255, 255);
bitmap.MakeTransparent(keyColor);

 

 

読み込んだ画像を回転や移動して描画

グラフィックスを変換してから描画します。

 

回転なら「RotateTransform」、移動なら「TranslateTransform」、スケールなら「ScaleTransform」を使います。

 

Bitmap bitmap = new Bitmap("_green.png");

Graphics g = Graphics.FromImage(canvas);

g.RotateTransform(45);
g.TranslateTransform(100, 0);
g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);

 

 

画像の回転、反転

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

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

 

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

 

 

画像を保存する

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

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

 

String filename="test.png";

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

 

 

 

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

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