• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETでのPictureBoxによる画像保存について)

VB.NETでのPictureBoxによる画像保存について

このQ&Aのポイント
  • VB.NETでプログラムでPictureBoxに絵を描かせる方法についてお尋ねします。画像を保存する際にエラーが発生しており、解決方法を教えていただきたいです。
  • 現在、VB.NETでPictureBoxに絵を描かせるプログラムを作成しています。画像の保存を試みた際にエラーが発生し、「System.Runtime.InteropServices.ExternalException」が発生しました。解決策を教えていただけると助かります。
  • VB.NETのプログラムでPictureBoxに描かれた絵を保存したいのですが、保存中にエラーが発生してしまいます。「System.Runtime.InteropServices.ExternalException」が発生し、GDI+で一般的なエラーが発生しましたと表示されます。どなたか解決方法をご教授いただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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() 見たいな感じでやってみて下さい。 イメージのセーブは同じ。 背景は塗ってやらないといけないけど。 それはいいですね。

kawaching2
質問者

お礼

うまくいきました!! ありがとうございますm(__)m 画像を保存するには、Bitmapでの定義がと必要とは・・・知らなかったです。 Bitmaptとはとりあえず仮の絵を描かせる場所と思えばいいですかねえ?

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

最初の Dim gra1 As Graphics = PictureBox1.CreateGraphics が気になるんですけど、 ホントに、PictureBox1に書き込みしてますか? 例えば、 プログラム動作中に、PictureBox1にJPGの画像とかロードしてみたらどうなりますか? あるいは、プロパティであらかじめ画像を読み込んでおいて、 その画像の上に描画できますか? 実は、フォームの上に描いてたりしませんか?

kawaching2
質問者

補足

どうやらPictureBox1に書いているみたいです。 真っ黒になるのはブラシの色を最初にBlackに指定してるからかなと思ったので、Redにしたのですが真っ黒です・・・ 絵を描かせるプログラムの中で、データからの計算より数値をfromArgbでColorを変えてやっています。 表示はうまくいっているみたいなのでやはり保存の時の手順がいかんのかなあって思っています。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

色々怪しそうな処はあるけど、 myfile2は、ファイル名のstringだよね。 だったら、 FileOpenとFileCloseは要らないよ。 多分、ファイルが既にオープンされているのに、 Image.Saveでファイルをオープンして書き込もうとしたから例外になったのじゃないかな。

kawaching2
質問者

補足

myfile2はおっしゃるとおりStringです。 BLUEPIXYさんの通り、FileopenとFilecloseを消してまわしたところ、一応まわるにはまわるのですが、出てきたBitmapが真っ黒です・・・背景等も黒ではないのに、何ででしょう??