[リストへもどる]
一括表示

投稿時間:2002/09/15(Sun) 10:08
投稿者名:夢さん
URL :
タイトル:
ピクチャボックスの内容が保存できない
今日は 始めて投稿します。VB初心者です。
ピクチャボックスを使ってお絵かきソフトを作りかけています。ファイルシステムからbmpファイル等を
読み込み、其の上に鉛筆ツール等で書き込みます。そして、保存すると何故かファイルシステムから
読み込んだ内容は保存されますが新たに書き込んだ内容が保存されません。保存はファイルシステムによって
行ってます。
何故ですか?如何したら保存できますか?何方か教えてください。
下に今使用中のコードを書きます。
With CommonDialog1
        .DialogTitle = "ファイルの名前を付けて保存"
        .Filter = "ビットマークファイル(*.bmp)|*.bmp"
        .ShowSave        
        FileName = .FileName
    End With
SavePicture Picture1, CommonDialog1.FileName

投稿時間:2002/09/15(Sun) 10:30
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ピクチャボックスの内容が保存できない
ピクチャーボックスの AutoRedraw プロパテイを  True にしていますか?

詳しくは
ここのグラフィック関係の ピクチャーボックスに表示・描画した画像・文字の保存 を
見て下さい。

投稿時間:2002/09/15(Sun) 11:22
投稿者名:夢さん
URL :
タイトル:
Re^2: ピクチャボックスの内容が保存できない
> ピクチャーボックスの AutoRedraw プロパテイを  True にしていますか?
>
> 詳しくは
> ここのグラフィック関係の ピクチャーボックスに表示・描画した画像・文字の保存 を
> 見て下さい。

早速ご指導頂きまして有難うございます。
やってみましたがだめでした。

投稿時間:2002/09/15(Sun) 13:02
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ピクチャボックスの内容が保存できない
だったら SavePicture Picture1.Image, CommonDialog1.FileName に
変更して見て下さい。

SavePicture Picture1, CommonDialog1.FileName これだったらエラーが
発生して止まるはずだが?


>保存すると何故かファイルシステムから読み込んだ内容は保存されますが
>新たに書き込んだ内容が保存されません。
これだと
ピクチャーボックスの AutoRedraw プロパテイを  True にしていますか?
これしかないと思うのですが、プロパティで設定していますか?(ピクチャーボックスの)

あと CommonDialog1.FileName には正しい ファイル名が入ってますか?

投稿時間:2002/09/15(Sun) 14:07
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re^4: ピクチャボックスの内容が保存できない
> SavePicture Picture1, CommonDialog1.FileName これだったらエラーが
> 発生して止まるはずだが?

この記述そのものは文法にも則った正しい書き方です。
ただす、PictureBoxの既定のプロパティであるPictureプロパティが保存されます。
Pictureプロパティは最初に設定した背景画像そのものなので、
グラフィックメソッドで描画したものは含まれません。

背景、及び、描画した内容は、
AutoRedraw=TrueにしたときのImageプロパティに含まれています。
というわけで、花ちゃんがおっしゃっているように保存するのを
Imageプロパティにすればなおります。

あるいは、PictureBoxに取り込んだ背景画像をPictureプロパティに残して
おかなくてもよければ、SavePictureメソッド実行前に、
Picture1.Picture = Picture1.Image
とする行を追加すれば、現状のSavePictureメソッドの使用方法でもいけます。

投稿時間:2002/09/15(Sun) 14:36
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: ピクチャボックスの内容が保存できない
> > SavePicture Picture1, CommonDialog1.FileName これだったらエラーが
> > 発生して止まるはずだが?
>
> この記述そのものは文法にも則った正しい書き方です。

そうなのですか?
ただし、Picture Box に画像を読み込んでいないとエラーとなります。

SavePicture Picture1.Image, CommonDialog1.FileName 
こちらの場合はエラーが発生しません。

投稿時間:2002/09/15(Sun) 15:09
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re^6: ピクチャボックスの内容が保存できない
> > > SavePicture Picture1, CommonDialog1.FileName これだったらエラーが
> > > 発生して止まるはずだが?
> >
> > この記述そのものは文法にも則った正しい書き方です。
>
> そうなのですか?

SavePictureステートメントのヘルプには、
第一引数にはPictureプロパティ、Imageプロパティを指定できるとあります。(両方ともIPictureDisp型)
元質問には、bmpファイルを読み込んでいるともかかれていますので、
Pictureプロパティは設定されているので、エラーにはならず設定したbmpが保存されるだけですね。

> ただし、Picture Box に画像を読み込んでいないとエラーとなります。
>
> SavePicture Picture1.Image, CommonDialog1.FileName 
> こちらの場合はエラーが発生しません。

Debug.Print Picture1.Image.Handle
Debug.Print Picture1.Picture.Handle

を実行するとわかりますが、
Pictureプロパティは未設定時はGDIハンドルが割り当てられていないのでエラーになります。
Imageプロパティは最初から割り当てられています。

Imageプロパティの方に関してはヘルプの以下の部分でこのことが明記されていますね。
||Image プロパティの値は、AutoRedraw プロパティの設定とは関係なく存在します。
||AutoRedraw プロパティが真 (True) に設定されていて、描画されたグラフィックスが存在しない場合は、
||BackColor プロパティで設定された色とピクチャだけが表示されます。

投稿時間:2002/09/17(Tue) 09:59
投稿者名:夢さん
URL :
タイトル:
今度はクリヤーできません。
今日は 熱心な討論有難うございます。

いやあ〜 難しい話になり,下記の内容ほとんど理解できません。
でも、どうやら、ファイルシステムで読み込んだ情報と新たに描き加えた情報は違うのだと言う事だけは分かりました。がどう違うかがいまいち分かりません。
従って画面の消去が出来ません。新たに描き加えた情報は消えるのですがファイルシステムで読み込んだ情報は残ってしまいます。
Picture1。Cls
少しずつ勉強していきます。お暇があったらアドバイスください。
有難うございました。


以下引用
> > > > SavePicture Picture1, CommonDialog1.FileName これだったらエラーが
> > > > 発生して止まるはずだが?
> > >
> > > この記述そのものは文法にも則った正しい書き方です。
> >
> > そうなのですか?
>
> SavePictureステートメントのヘルプには、
> 第一引数にはPictureプロパティ、Imageプロパティを指定できるとあります。(両方ともIPictureDisp型)
> 元質問には、bmpファイルを読み込んでいるともかかれていますので、
> Pictureプロパティは設定されているので、エラーにはならず設定したbmpが保存されるだけですね。
>
> > ただし、Picture Box に画像を読み込んでいないとエラーとなります。
> >
> > SavePicture Picture1.Image, CommonDialog1.FileName 
> > こちらの場合はエラーが発生しません。
>
> Debug.Print Picture1.Image.Handle
> Debug.Print Picture1.Picture.Handle
>
> を実行するとわかりますが、
> Pictureプロパティは未設定時はGDIハンドルが割り当てられていないのでエラーになります。
> Imageプロパティは最初から割り当てられています。
>
> Imageプロパティの方に関してはヘルプの以下の部分でこのことが明記されていますね。
> ||Image プロパティの値は、AutoRedraw プロパティの設定とは関係なく存在します。
> ||AutoRedraw プロパティが真 (True) に設定されていて、描画されたグラフィックスが存在しない場合は、
> ||BackColor プロパティで設定された色とピクチャだけが表示されます。

投稿時間:2002/09/17(Tue) 11:29
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re: クリヤーできません
> でも、どうやら、ファイルシステムで読み込んだ情報と新たに描き加えた情報は違うのだと言う事だけは分かりました。がどう違うかがいまいち分かりません。
> 従って画面の消去が出来ません。新たに描き加えた情報は消えるのですがファイルシステムで読み込んだ情報は残ってしまいます。
> Picture1。Cls

アニメみたいに、背景とその上にセル画があるようなのをイメージするとわかりやすいのではないでしょうか。
Pictureプロパティは背景で、Imageプロパティは背景にセル画を重ねたものです。
Clsメソッドで消去できるのは、セル画の部分だけです。
背景も消したければ、Pictureプロパティをクリアする必要がありますが、それは以下のようにすればできます。

Set Picture1.Picture = Nothing

投稿時間:2002/09/18(Wed) 01:34
投稿者名:夢さん
URL :
タイトル:
お陰さまで難問解決です。
よねKENさん 今晩は いやこの時間はおはようございますかな。

> > でも、どうやら、ファイルシステムで読み込んだ情報と新たに描き加えた情報は違うのだと言う事だけは分かりました。がどう違うかがいまいち分かりません。
> > 従って画面の消去が出来ません。新たに描き加えた情報は消えるのですがファイルシステムで読み込んだ情報は残ってしまいます。
> > Picture1。Cls
>
> アニメみたいに、背景とその上にセル画があるようなのをイメージするとわかりやすいのではないでしょうか。
> Pictureプロパティは背景で、Imageプロパティは背景にセル画を重ねたものです。
> Clsメソッドで消去できるのは、セル画の部分だけです。
> 背景も消したければ、Pictureプロパティをクリアする必要がありますが、それは以下のようにすればできます。
>
> Set Picture1.Picture = Nothing
はい、出来ました。

花ちゃん、よねKENさん 本当に有難うございました。お陰さまで難問解決です。
又,分からんことがありましたら投稿させて頂きます。
おやすみなさい。

投稿時間:2002/09/17(Tue) 09:37
投稿者名:夢さん
URL :
タイトル:
ファイルシステムによるSaveが出来ました。
よねKENさん 今日は ご投稿いただき有難うございます。

引用一部省略
> あるいは、PictureBoxに取り込んだ背景画像をPictureプロパティに残して
> おかなくてもよければ、SavePictureメソッド実行前に、
> Picture1.Picture = Picture1.Image
> とする行を追加すれば、現状のSavePictureメソッドの使用方法でもいけます。
この方法でファイルシステムによるSaveが出来ました。
有難うございました。

投稿時間:2002/09/17(Tue) 09:30
投稿者名:夢さん
URL :
タイトル:
Re^2: ピクチャボックスの内容が保存できない
> ピクチャーボックスの AutoRedraw プロパテイを  True にしていますか?
しました。
>
> 詳しくは
> ここのグラフィック関係の ピクチャーボックスに表示・描画した画像・文字の保存 を
> 見て下さい。
此処を参考にファイルシステムを外しSaveに成功しました。2002/09/15現在