Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
PictureBoxに描画した画像の移動
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=16#CommentId132
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
永字
 (社会人)
投稿日時
2008/10/3 12:41:57
先日は、丁寧なご回答をありがとうございました。
ご提示されたサンプルを応用して、何とか望んだような動作をするようになりました。
しかし、更にもう一つ問題が発生してしまいまして…。
マップをクリックすることで座標を指定し、画像を描画する事には成功していると思います。
本体ウィンドウとは別フォームでマップフォームを作り、そちらに描画しています。
・本体側(マップをクリックすることで呼び出される)
Sub mapRedraw()
Dim i As Integer
myImages = New List(Of Bitmap)
points = New List(Of Point)
For i = 0 To 19
If Not Me.tokenListC.Items(i) Is "-" Then
'画像名、画像パス、座標をタブで分解する
Dim args() As String = Me.tokenListC.Items(i).Split(CChar(vbTab))
'マップフォームに値を渡す
Dim XX As Integer = args(2) - 16
Dim YY As Integer = args(3) - 16
myImages.Add(New Bitmap(args(1)))
points.Add(New Point(XX, YY))
End If
Next
My.Forms.mapForm.Invalidate()
End Sub
・マップフォーム側
'マップを再描画する
Private Sub mapBox_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles mapBox.Paint
Dim i As Integer
'現在セットされている座標にそれぞれの画像を描画
For i = 0 To Form1.myImages.Count - 1
Form1.myImages(i).MakeTransparent(Color.White)
e.Graphics.DrawImage(Form1.myImages(i), Form1.points(i))
Next
End Sub
マップをクリックし、画像を描画した後、画面を一度他ウィンドウの後ろなどに隠せば、Paintイベントが走って描画を行ってくれるのですが、本体側の
My.Forms.mapForm.Invalidate()
が動作してくれず、Paintイベントが起こらず、自動での再描画を行ってくれません。
RefreshやUpdateでも同様でした。
本体側から、子ウィンドウの自動再描画を行う事は出来るのでしょうか?
度々で申し訳御座いませんが、御指導をお願い致します。