名前を付けて保存ダイアログを使って自由に名前を付けて好きなフォルダにフォーム1に描画した画像データを保存したいのです。
ダイアログ表示は出来ますが保存ボタンを押したらエラーが出ます。
コードは以下の通りです。
CommonDialog1.Filter = "画像(*.bmp)|*.bmp"
CommonDialog1.Flags = cdloFNverwritePrompt
CommonDialog1.ShowSave
SavePicture Pic1, CommonDialog1.Filename
皆さんの力を貸して頂けないでしょうか、お願いします。
SavePictureの第1引数に指定するべきは、「PictureBoxコントロール」ではなく、
「Pictureオブジェクト」である事に注意してください(※1)。ですから、本来は
「Pic1.Picture」もしくは「Pic1.Image」などを指定するべきなのです。
ただし、PictureBoxのデフォルトプロパティは、Pictureプロパティなので、
この場合、VBは「Pic1.Picture」が指定されたものと判断してくれます。
ここで問題となるのが、『PictureプロパティとImageプロパティの違い』です。
Pictureプロパティは「PictureBoxの背景画像」を示すものなのですが、
ここには「実行時に描画された内容」は含まれていないのです。
そのため(あらかじめ背景画像を指定していなければ)、保存時にエラーとなります。
実行時に描画された内容までも得たいのであれば、「Imageプロパティ」を
利用する必要があります。なお、Imageプロパティの動作は、AutoRedrawプロパティの
影響を受ける事になりますので、AutoRedrawについても、あわせて確認しておいて下さい。
------------------------------------
(※1)
ヘルプには、SavePictureの第1引数の説明として、
》 ピクチャ ファイルに保管するピクチャを持つピクチャ (Picture) コントロール
》 またはイメージ (Image) コントロールを指定します。
とありますが、この解説は正しくありません。
(そもそも、PictureBoxコントロールはあっても、Pictureコントロールはありません)
より正確には、ヘルプの[使用例]や、ヘルプの[解説]の項などにもありますように、
Form1.Icon
Form1.Image
Image1.Picture
Picture1.Image
Picture1.Picture
などといったものを指定する必要があります。
っていうことは、どこを変えればいいのでしょう。
編集 削除魔界の仮面さん、皆さん、どうもありがとうございました。
おかげで助かりました。
感謝!