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

FormLoad時にPictureBoxに画像を表示

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

質問させていただきます。
どうかよろしくお願いします。

VB.NETでPictureBoxに画像を表示させようと、以下のようなソースを書きました。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Bmap As Bitmap = New Bitmap("画像パス")
Dim g As Graphics = PictureBox1.CreateGraphics()

'画像の描画
g.DrawImage(Bmap, 0, 0)
Bmap.Dispose()
g.Dispose()
End Sub

ボタンアクションでは、この動作で画像が表示されるのですが、
FormLoad時では行われません。なぜでしょうか?
PictureBox.Image = Image.FromFile(画像パス)であれば画像は表示されますが、
表示している画像を削除する場合があるので、この方法だと
ファイルが使用中になってしまうので、使えないと思っているのですが・・・

アドバイスをお願いします。
自己レスです。MSDNを見ていたら、表示は出来ました。
ソースは以下のとおりです。

Dim fs As System.IO.FileStream
fs = New System.IO.FileStream(strFile, IO.FileMode.Open,IO.FileAccess.Read)
PictureBox1.Image = System.Drawing.Image.FromStream(fs)
fs.Close()

ここで新たな問題が・・・
画像の拡大、縮小を行う必要があるので、Bitmapオブジェクトを使用したいと思っています。
が、Bitmapオブジェクトを使用すると、ファイルが使用中になってしまうという問題が・・・

アドバイスをお願いします。
タカさん、こんにちは。

■No7910に返信(タカさんの記事)
> ここで新たな問題が・・・
> 画像の拡大、縮小を行う必要があるので、Bitmapオブジェクトを使用したいと思っています。
> が、Bitmapオブジェクトを使用すると、ファイルが使用中になってしまうという問題が・・・
>

FileStreamを利用すれば、使用中にはならないと思います。

Dim fs As System.IO.FileStream
fs = New System.IO.FileStream(strFile, IO.FileMode.Open,IO.FileAccess.Read)
Dim Bmap As Bitmap = New Bitmap(fs)
fs.Close()
ぱるさん、ご返信ありがとうございます。

BitMapオブジェクトに画像パスを直接渡すのではなく、
FileStreamから渡すことで、解決しました。
ありがとうございます。

しかし、Graphicsオブジェクトを使ってFormLoad時に画像を表示する方法は謎です。
画像を扱うのは難しいですね・・・

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