重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PaintBoxに描かれた内容を保存したいのですが、どうやって保存すれば良いのでしょうか?

SavePictureDialogを使えば良いのだと思い、使ってみたのですが、使い方が間違っているのか、上手くいきません。(エラーは出ないのですが、プレビューがなしになり、何も保存されていません。)

StringGridの内容は保存できるのですが、PaintBoxの内容の保存の仕方が分かりません。ご教授ください。

A 回答 (1件)

開発環境が明記されていませんが、名称などから


C++Builderと推測してよろしいですか。(Delphiではないですよね?)

だとすれば、
まず、

PaintBoxには、ビットマップなどのオブジェクトが格納される
TPictureプロパティーが無いので、セーブしたい場合は
TBitmapか、Imageなどにコピーしてから、セーブしていく
必要があります。

SavePictureDialogは、保存するファイル名を入力する機能があるだけで、
保存そのものは、TBitmapやTPicturaなどから行います。
SavePictureDialogが開いたら、 ファイル名.bmp と入力してやると、
それが、ビットマップ名として保存されます。

次の例では、TBitmapにコピーしてみた場合です。

//PaintBoxに何か絵を描く
PaintBox1->Canvas->Brush->Color = clBlue;
PaintBox1->Canvas->Ellipse(10,10,50,50);

//TBitmapを作成して、コピーする
Graphics::TBitmap *bmp = new Graphics::TBitmap;
bmp->Width = PaintBox1->Width; bmp->Height = PaintBox1->Height;
BitBlt(bmp->Canvas->Handle,0,0,PaintBox1->Width,PaintBox1->Height,
PaintBox1->Canvas->Handle,0,0,SRCCOPY);

//SavePictureDialogでファイル名と場所を指定して、TBitmapでSaveする
if ( SavePictureDialog1->Execute())
{
bmp->SaveToFile(SavePictureDialog1->FileName);
}
delete bmp;


PaintBoxは使いにくいので、たいてい、Imageコンポーネントの
方を使ってますね。
 Imageの場合なら、Image->Picture->SaveToFile()
だけで保存できますし、TPaintBoxの機能は、ほとんど使えたと
思います。

Imageであれば、
if ( SavePictureDialog1->Execute())
{
Image1->Picture->SaveToFile(SavePictureDialog1->FileName);
}
だけで、できます。

詳しくはリンク集の中の掲示板に質問してみてください。
C++Builderリンク集
http://www2.famille.ne.jp/~akio1998/l_cpb.html
    • good
    • 0
この回答へのお礼

Borland C++Builder5です。開発環境を言い忘れてました、申し訳ないです。

分かり易い説明、有難う御座いました。お蔭様で解決致しました。これからも、何かありましたら宜しくお願い致します。

お礼日時:2005/07/02 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!