カテゴリー
Software Tech

[C#備忘録]画像ファイル出力 | AmpiTa Project

 AmpiTa(多用途安否確認システム)に新しいフォームを増設することになり、手順を忘れていることが多いので、次回のために備忘録を作成しています。




Resourcesにある画像を出力

 Visual StudioではResourcesに画像や文字を登録しておいて、随時呼び出して使う事ができます。

 文字列の場合、多言語化に有用です。

 ここでは『Resources』に『Logo』という名で登録してある画像を呼び出して、所定のサイズで出力します。

 最初に『Bitmap』で画像処理を宣言します。

 『640, 360』は出力する画像サイズです。

 『Save』で指定したフォルダに『LogoEx.png』という名前で保存するよう指示しています。

Bitmap bmp_MyImage = new Bitmap(Resources.Logo,640, 360);
bmp_MyImage .Save(str_Folder + "\\" + "LogoEx.png");




グラフを画像として出力

 多用途安否確認システムAmpiTaでは、講義中の挙手の代わりをするクリッカーの機能を模したAudience Response Systemを搭載しています。

 その機能の1つにグラフ化するという機能があり、そのグラフはPNGかJPEGで出力できる機能を実装しています。

 今回はその方法を備忘録として載せておきます。

int int_Width = chart_Graph_Volume_Respirator.Width;
int int_Height = chart_Graph_Volume_Respirator.Height;
chart_Graph.Visible = false;
chart_Graph.Width = 1600;
chart_Graph.Height = 900;
chart_Graph.SaveImage(str_Folder + "\\" +"G_01.png", ChartImageFormat.Png);
chart_Graph.Width = int_Width;
chart_Graph.Height = int_Height;
chart_Graph.Visible = true;

 何も考えずにシンプルに処理する場合は『SaveImage(str_Folder + “\\” +”G_01.png”, ChartImageFormat.Png);』の部分だけで機能します。

 『SaveImage』で画像として保存を指示、括弧の最初で保存先、次がフォーマットです。
 保存先は予め変数str_Folderに格納済、そこに『G_01』という名前でPNGファイルを保存しています。
 筆者のアプリではPNGとJPEGを選択できるようになっていますが、選択肢は増やす事ができます。

 今回は色々と書いてあります。最初に、現在のアプリ(EXE)上で表示されているグラフのサイズを取得しておきます。これは、後で元に戻します。『int_Width』が幅、『int_Height』が高さです。

 画像処理にはメモリを使うと思うので、一時的にグラフを消しておきます。『Visible』を『false』で消し、終わったら『true』で戻します。

 今回はグラフを 1,600×900 の画像として出力したいので、グラフのサイズを変更します。




見えているままのフォームを画像として出力

 フォームをそのまま保存できます。

 『new Bitmap(this.Width, this.Height)』で変数『bmp_CaptureForm』に入れる画像を定義します。サイズはフォームのサイズそのものという指示です。『this』はVBの『me』のようなものです。

 次に変数『bmp_CaptureForm』へこのフォーム『this』を格納します。『this』の座標『0, 0』を起点に端までという指示が『Rectangle(0, 0, this.Width, this.Height)』です。
 ここの座標を変えれば一部分を抜き出すことができます。

 次に変数『bmp_CaptureForm』を『Save』します。ファイル名『Setup.png』を所定のフォルダに保存する指示です。

 最後に変数『bmp_CaptureForm』を空にして終わります。

 冒頭の『txb_Summary.SelectionStart = 0;』は見た目の前処理です。テキストボックスを全選択の状態にしないために『SelectionStart』をゼロにしています。任意の処理です。

txb_Summary.SelectionStart = 0;
Bitmap bmp_CaptureForm = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(bmp_CaptureForm, new Rectangle(0, 0, this.Width, this.Height));
bmp_CaptureForm.Save(str_Folder + "\\" + "Setup.png");
bmp_CaptureForm.Dispose();
               

 下図はキャプチャしたフォームです。非常に見づらいのでHTML化してレポートを別途作成しています。

【参考】[C#備忘録]HTMLファイルでレポート




おわりに

 今回は画像をファイルとして出力する方法に触れました。

 まだ実装できていないのですが、今後はQRコードを取り扱っていこうと思っています。実装できたら備忘録を作成します。




関連記事