戻る

2. グラフを画像として保存する。


サポートする画像フォーマットは、ビットマップファイル(.BMP)、アイコン(.ICO)、Windowsメタファイル(.WMF)、およびWindows 拡張形式メタファイル(.EMF)です。 今回の、僕の作ったプログラムは、ビットマップだけを使えるようにしました。追加として、"#include "をヘッダファイルに書き加えてJPEG 保存出来るようにしました。

まず、コンポーネントのDialogs->SavePictureDialogをForm上に配置する。そして、下の命令をUnitのC++ソースファイルに書きます。

2.1 ビットマップファイルとしてイメージを保存する場合

  if(SavePictureDialog1->Execute())
  {
  Image1->Picture->SaveToFile(SavePictureDialog1->FileName);
  }

上のソースのように、if文で書かないとエラーが起きます。

上のように書くとImage1にカンバスで書いたグラフをファイルとして保存できます。
”Picture”を使うことで、Canvasで書いたグラフをビットマップイメージとして扱えます。
”SaveToFile”によってそのビットマップイメージをファイルに保存できます。

この場合は、保存できる画像フォーマットは、ビットマップ(*.bmp)ファイルです。

2.2 JPEGファイルとしてイメージを保存する場合

if(SavePictureDialog1->Execute())
{
 TJPEGImage *jp = new TJPEGImage();
   try
   {
      jp->Assign(Image1->Picture->Bitmap);
      jp->SaveToFile(SavePictureDialog1->FileName);
   }
   __finally
   {
   delete jp;
   }
}

Pictureはもともとのファイル形式が、ビットマップなので、Jpegに変換する必要があります、Assighを使えば変換できます。
TImage1->Picture->Bitmapはビットマップ形式ですが、 Assignを使ってそれをTJPEGImage *jp に代入すると、 ファイル内容がJpegになります。

try __finally 構文は、tryの中の処理が、エラーであっても、__finallyの中の処理を実行する、と言う意味です。この構文は、例外処理と呼ばれています。


うまくSavePictureDialogが動けば下のようなダイアログが表示されます。


戻る
fuda@tube.ee.uec.ac.jp