- PR -

FormがLoad時にPictureBoxに描画できない

1
投稿者投稿内容
gen
会議室デビュー日: 2006/07/19
投稿数: 17
投稿日時: 2006-08-07 18:32

こんばんは、よろしくお願いいたします。

以下はVB2005のテストソースです。
----------------------------------------------------------
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

CreateGraphic(PictureBox1.CreateGraphics())

End Sub
---------------------

Public Sub CreateGraphic(ByVal eg As System.Drawing.Graphics)

eg.DrawLine(Pens.Black, 30, 30, 300, 30)

End Sub
---------------------

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

CreateGraphic(PictureBox1.CreateGraphics())

End Sub
----------------------------------------------------------

Form1_Load時にPictureBoxに描画できないけどButton1_Clickすると描画されるんです。
Form1_Load時に描画する方法はないでしょうか?

この現象でもう半日もつぶしちゃいました、(T_T)
どなたかアドバイス宜しくお願い致します。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-08-07 19:38
Load はまだフォームを読み込んでいる最中なので、ここで描画しては駄目です。
表示を終えたときに呼び出される適切なイベントで描画してみるとか、自身を Refresh() させてみると描画されると思います。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-08-07 19:47
ボタンを押したときに描画できても、ボタンを押して描画された後、他のウィンドウの後ろにまわして再度表示すると線が消えますよね?

描画は Paint イベントで行ってください。
_________________
囚人のジレンマな日々
gen
会議室デビュー日: 2006/07/19
投稿数: 17
投稿日時: 2006-08-08 09:36
おはようございます。
返事遅れてごめんなさい。

囚人さん、田中一郎さん、アドバイスありがとうございます。
引用:

描画は Paint イベントで行ってください。


System.Drawing.GraphicsからPaintに変更するのは膨大の作業になるので...(^_^;)

引用:

表示を終えたときに呼び出される適切なイベントで描画してみるとか、自身を Refresh() させてみると描画されると思います。


適切なイベントってタイマーとかですかね、いい方法がないでしょうかね...
Form1.Refresh()すると消えてしまいます。
タイマー以外のイベントはないでようか?

宜しくお願い致します。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2006-08-08 10:01
通常、再描画が必要な時はPaintイベントが発生します。
コード:

Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles PictureBox1.Paint
CreateGraphic(e.Graphics)
End Sub


これでいいんじゃないですか?

[ メッセージ編集済み 編集者: 一郎 編集日時 2006-08-08 10:02 ]
gen
会議室デビュー日: 2006/07/19
投稿数: 17
投稿日時: 2006-08-08 10:25
一郎さん、アドバイスありがとうございます。

ごめんなさい、できました。
そのとおりでした。

ありがとうございました。

[ メッセージ編集済み 編集者: gen 編集日時 2006-08-08 10:41 ]
1

スキルアップ/キャリアアップ(JOB@IT)