投稿者 ラオシス  (中学生) 投稿日時 2011/10/10 22:08:21
そうですね・・・
動きが複雑な時もPaintイベントで描画できると思います。
逆にそのようにPaintイベントに入れず、描画するメソッドを分けてしまうとバグが増えたり、
複雑になってしまうと思います。もし描画する部分にバグがあると発覚した場合、Paintイベントだけを見ればいいので。
初級講座のオセロやるきおさんが作られた、シューティングゲームを参考にすればいかがでしょうか?

たとえば、MouseMoveイベントでフレームを施す処理で、対象になるカードを変数に記録し
無理やりPaintイベントを発生させ、そこでフレームを施すか判定し、表示させればいいでしょう。
Paintイベントからは、マウスがあるか識別はできないので、判定する必要があります。

判定するためグローバルのBoolean型の変数を作り、MouseMoveイベントでtrue、MouseLeaveですかね?そこでfalseにさせ、更新するためにPaintイベントで描画させれば。
解説されたように、Invalidate / Update / Rereshで発生させればいいです。


多分このコード間違いだらけだと思うのでご参考まで。
Private IsFocus As Boolean                            '本当にアクティブか 
       
    '実際の描画を行う 
    Private Sub PictureBox1_Paint(ByVal sender As System.ObjectByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
            
            If IsFocus Then
                 'フレームを表示 
            End If
    End Sub

    Private Sub PictureBox1_MouseMove(ByVal sender As System.ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
         'マウスが来たのでtrue 
         IsFocus=True
         
         '強制描画命令 
         PictureBox1.Update()   'ここは適当なメソッドを。 
    End Sub

    Private Sub PictureBox1_MouseLeave(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
         'マウスポインタが外れたのでFalse 
         IsFocus=False
         '強制描画命令 
         PictureBox1.Update() 'ここは適当なメソッドを。 
    End Sub