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

フォームへの画像表示方法(DrawImageメソッドを使用して)

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

いつもお世話になります。
HPを参考に、DrawImageメソッドを使用して画像を表示させたいと考えているのですが、上手くいかずに困っています。

Private MyPictureBox As New PictureBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim mybmp As New Bitmap("D:\abc.bmp")
Dim myCG As System.Drawing.Graphics

myCG = MyPictureBox.CreateGraphics()
myCG.DrawImage(mybmp, 1, 1, mybmp.Width, mybmp.Height)

With Me
.Controls.Add(MyPictureBox)
.Dock = DockStyle.Fill
.Invalidate()
End With

mybmp.Dispose()

としているのですが、フォーム上には何も表示されません。どこが間違っているのか分からず質問させてもらいました。

 どなたかご存知でしたら、ご教授頂きたく。よろしくお願い致します。
■No20660に返信(tororoさんの記事)
> いつもお世話になります。
> HPを参考に、DrawImageメソッドを使用して画像を表示させたいと考えているのですが、上手くいかずに困っています。

DrawImageを使うのであれば、PictureBoxのPaintイベント
http://dobon.net/vb/dotnet/graphics/drawimage.html

PictureBoxのImageプロパティに設定する
http://dobon.net/vb/dotnet/graphics/pictureboximage.html

このあたりを参考にすれば良いかと
追記です。

Loadイベントではなく、Paintイベントに記載すると、Load後、サイズ変更などの処理を加えると表示されました。

 Load終了と同時に表示させるには、コーディングすればよいと思うのですが、どなたかご存知の方、いませんか?
■No20662に返信(tororoさんの記事)
> Loadイベントではなく、Paintイベントに記載すると、Load後、サイズ変更などの処理を加えると表示されました。

Paintイベント内でCreateGraphics()してませんか?

引数にPaintEventArgsが来ていると思うので
そいつのプロパティのGraohicsを使ってください

http://dobon.net/vb/dotnet/graphics/drawimage.html
2007/10/04(Thu) 15:17:02 編集(投稿者)
2007/10/04(Thu) 15:16:58 編集(投稿者)

自己レスです。

解決しました。こうへいさん、アドバイスありがとうございました。
FormのPaintイベントにて、DrawImageを行っていました。
ただし、PictureBoxのPaintイベントにてsenderを使用し、DrawImageを行ったのですが、上手くいきませんでした。

次の方法にて上手くいきました。

フォームのPaintイベントにて、DrawImageを行います。
PictureBoxのPaintイベントにて、Me.Invalidate()を使用し、再描画すると、表示されました。

つながりが、よく分かりませんが、上記にて上手くいきました。
解決済み!
解決済みになってますが…

■No20664に返信(tororoさんの記事)

> FormのPaintイベントにて、DrawImageを行っていました。
> ただし、PictureBoxのPaintイベントにてsenderを使用し、DrawImageを行ったのですが、上手くいきませんでした。

もう一個の引数 e(As System.Windows.Forms.PaintEventArgs)を使います
e.Graphics.DrawImage


> PictureBoxのPaintイベントにて、Me.Invalidate()を使用し、再描画すると、表示されました。

Invalidate は 無効化(そして再描画)ってことなので
Paintイベントでは使わないほうがいいと思います
解決済み!
2007/10/04(Thu) 17:03:04 編集(投稿者)

こうへいさん、多くのアドバイスありがとうございました。
多謝です。

e.Graphics.DrawImageで上手くいきました。
解決済み!

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