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

ファイルダイアログ跡が残る

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

 いつもプログラム作成時に参考にさせてもらっています。
 画像処理のプログラムを作成中ですが、次のことで行き詰まっています。
 オープンファイルダイアログを表示してファイルを選択後、画像を表示しますが、画像が表示された後、オープンファイルダイアログの部分がグレーで残ってしまい、画像が表示されません。
 プログラムをロードして、1回目でダイアログがプログラムエリアに収まっていれば、問題なく表示されるが、2回目以降は跡が残ってしまいます。1回目でも、ダイアログがプログラムエリアから離れると、跡が残ってしまいます。
 実質的には、再度画像を表示するようにすれば問題は無いのですが、気持ちがあまり良くありません。
 何が問題なのでしょうか。よろしくお願いいたします。


'モジュール変数
Dim pb1 As PictureBox
Dim bmp1 As Bitmap

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
pb1 = PictureBox1
bmp1 = New Bitmap(pb1.Width, pb1.Height)
pb1.Image = bmp1
End Sub

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Dim ofd As New OpenFileDialog
Dim g As Graphics = pb1.CreateGraphics()

'ダイアログのフィルター
ofd.Filter = "jpgファイル(*.jpg)|*.jpg"

'ファイル選択
If ofd.ShowDialog() = DialogResult.OK Then
bmp1 = New Bitmap(ofd.FileName)
On Error GoTo ErrHandler
End If

'高品質3次補間で640×480ピクセルで表示
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.DrawImage(bmp1, 0, 0, 640, 480)

'グラフィックオブジェクトの破棄
g.Dispose()

ErrHandler:

End Sub
End Class

以上、よろしくお願いいたします。
こんにちは。

> が、画像が表示された後、オープンファイルダイアログの部分がグレーで残ってしまい、画像が表示されません。

これはpb1.CreateGraphics()で作成したGraphicsに
描画しているためです。これはPictureBoxのImageとは違います。
従って、MenuItem2_Clickイベント一回のみで描画されているため
他のWindowなどが被ると消えてしまいます。
まずはImageに描画するために
Dim g As Graphics = Graphics.FromImage(pb1.Image)
のようにして、g.Dispose()の後にでもpb1.Invalidate()を呼び出してください。
早速の御教示ありがとうございます。

 うまくいきました。
 これからもよろしくお願いいたします。
解決済み!

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