名前を付けて指定先へ保存

解決


たけ  2003-02-01 08:31:59  No: 76993  IP: [192.*.*.*]

名前を付けて保存ダイアログを使って自由に名前を付けて好きなフォルダにフォーム1に描画した画像データを保存したいのです。
ダイアログ表示は出来ますが保存ボタンを押したらエラーが出ます。
コードは以下の通りです。

CommonDialog1.Filter = "画像(*.bmp)|*.bmp"
CommonDialog1.Flags = cdloFNverwritePrompt
CommonDialog1.ShowSave
SavePicture Pic1, CommonDialog1.Filename

皆さんの力を貸して頂けないでしょうか、お願いします。

編集 削除
魔界の仮面弁士  2003-02-01 10:13:52  No: 76994  IP: [192.*.*.*]

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
などといったものを指定する必要があります。

編集 削除
たけ  URL  2003-02-01 23:56:14  No: 76995  IP: [192.*.*.*]

っていうことは、どこを変えればいいのでしょう。

編集 削除
たけ  URL  2003-02-02 14:39:41  No: 76996  IP: [192.*.*.*]

魔界の仮面さん、皆さん、どうもありがとうございました。
おかげで助かりました。
感謝!

編集 削除