- ベストアンサー
VB.NETでのPictureBoxによる画像保存について
- VB.NETでプログラムでPictureBoxに絵を描かせる方法についてお尋ねします。画像を保存する際にエラーが発生しており、解決方法を教えていただきたいです。
- 現在、VB.NETでPictureBoxに絵を描かせるプログラムを作成しています。画像の保存を試みた際にエラーが発生し、「System.Runtime.InteropServices.ExternalException」が発生しました。解決策を教えていただけると助かります。
- VB.NETのプログラムでPictureBoxに描かれた絵を保存したいのですが、保存中にエラーが発生してしまいます。「System.Runtime.InteropServices.ExternalException」が発生し、GDI+で一般的なエラーが発生しましたと表示されます。どなたか解決方法をご教授いただけませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
やっぱり Dim gra1 As Graphics = PictureBox1.CreateGraphics が悪いと思うんですよね。 画面上に描画するだけならそれでいいと思うんですが。 フォームをロードした時に、 Dim bitmap As Bitmap = New Bitmap(PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = bitmap 見たいに、まず、イメージを作ってやって 描画する部分では Dim gra1 As Graphics Dim bluepen As Pen gra1 = Graphics.FromImage(PictureBox1.Image) bluepen = New Pen(Color.Blue, 2) gra1.DrawEllipse(bluepen, 10, 10, 100, 100) PictureBox1.Refresh() 見たいな感じでやってみて下さい。 イメージのセーブは同じ。 背景は塗ってやらないといけないけど。 それはいいですね。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
最初の Dim gra1 As Graphics = PictureBox1.CreateGraphics が気になるんですけど、 ホントに、PictureBox1に書き込みしてますか? 例えば、 プログラム動作中に、PictureBox1にJPGの画像とかロードしてみたらどうなりますか? あるいは、プロパティであらかじめ画像を読み込んでおいて、 その画像の上に描画できますか? 実は、フォームの上に描いてたりしませんか?
補足
どうやらPictureBox1に書いているみたいです。 真っ黒になるのはブラシの色を最初にBlackに指定してるからかなと思ったので、Redにしたのですが真っ黒です・・・ 絵を描かせるプログラムの中で、データからの計算より数値をfromArgbでColorを変えてやっています。 表示はうまくいっているみたいなのでやはり保存の時の手順がいかんのかなあって思っています。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
色々怪しそうな処はあるけど、 myfile2は、ファイル名のstringだよね。 だったら、 FileOpenとFileCloseは要らないよ。 多分、ファイルが既にオープンされているのに、 Image.Saveでファイルをオープンして書き込もうとしたから例外になったのじゃないかな。
補足
myfile2はおっしゃるとおりStringです。 BLUEPIXYさんの通り、FileopenとFilecloseを消してまわしたところ、一応まわるにはまわるのですが、出てきたBitmapが真っ黒です・・・背景等も黒ではないのに、何ででしょう??
お礼
うまくいきました!! ありがとうございますm(__)m 画像を保存するには、Bitmapでの定義がと必要とは・・・知らなかったです。 Bitmaptとはとりあえず仮の絵を描かせる場所と思えばいいですかねえ?