DOBON.NET DOBON.NETプログラミング掲示板過去ログ

PictureBoxへ描画した画像の保存

環境/言語:[Windows2000 VB.NET]
分類:[.NET]

初めてレスします。

現在、PictureBox上へ線や円等の図形を描画し、それをファイルへ保存する処理を
作成しています。

.NET Tipsの線を引くを参考にし、線は描画することが出来ました。
しかし、.NET Tipsの画像フォーマットを指定して保存するを参考にしてロジックを組むと、実行時に下記のエラーが発生します。

'System.NullReferenceException' のハンドルされていない例外が Form1.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。

何処が間違っているのでしょうか?
ご教授願います。

コードは以下の通りです。

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = PictureBox1.CreateGraphics()

g.DrawLine(Pens.Black, 0, 0, 100, 100)
g.Dispose()

PictureBox1.Image.Save("C:\test.png", _
tem.Drawing.Imaging.ImageFormat.Png)


です。

よろしくお願いします。
> .NET Tipsの線を引くを参考にし、線は描画することが出来ました。
> しかし、.NET Tipsの画像フォーマットを指定して保存するを参考にしてロジックを組むと、実行時に下記のエラーが発生します。
>
> 'System.NullReferenceException' のハンドルされていない例外が Form1.exe で発生しました。
> 追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
>
> 何処が間違っているのでしょうか?

CreateGraphicsで取得したGraphicsオブジェクトに描画している点です。

> Private Sub Button1_Click(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles Button1.Click
> Dim g As Graphics = PictureBox1.CreateGraphics()

この部分を下記のように書き換えて下さい。
PictureBox1.Image = New Bitmap(PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height)
Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)

> g.DrawLine(Pens.Black, 0, 0, 100, 100)
> g.Dispose()
>
> PictureBox1.Image.Save("C:\test.png", _
> System.Drawing.Imaging.ImageFormat.Png)
>

#動作確認はしてません
> この部分を下記のように書き換えて下さい。
> PictureBox1.Image = New Bitmap(PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height)
> Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)

早速のレス有り難う御座います。
上記の通り書き換えしたところ、正常に保存することが出来ました。

有り難う御座いました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板