まず、コンポーネントのDialogs->SavePictureDialogをForm上に配置する。そして、下の命令をUnitのC++ソースファイルに書きます。
if(SavePictureDialog1->Execute())
{
Image1->Picture->SaveToFile(SavePictureDialog1->FileName);
}
上のソースのように、if文で書かないとエラーが起きます。
上のように書くとImage1にカンバスで書いたグラフをファイルとして保存できます。
”Picture”を使うことで、Canvasで書いたグラフをビットマップイメージとして扱えます。
”SaveToFile”によってそのビットマップイメージをファイルに保存できます。
この場合は、保存できる画像フォーマットは、ビットマップ(*.bmp)ファイルです。
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が動けば下のようなダイアログが表示されます。