投稿者 たかくん  (社会人) 投稿日時 2011/10/8 09:59:03
こんにちは、下記のコードを見てください。(一部抜粋)
DrawScreen()の中のPut(g)メソッドの内容はDrawImage()です。
ペイントイベントでDrawScreen(e.Graphics)とした時は横縦で28枚のカードが描画されます。
でもDrawScreen(g)の場合Card(3,1)と半枚分までしか描画されないのです。
何故こうなるのでしょうか?

'グローバル変数
Private g as Graphics=Me.Creategraphics

  Private Sub MainGUI_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        DrawScreen(g)
  End Sub

 ''' <summary>
    ''' カードの描画
    ''' </summary>
    ''' <param name="g"></param>
    ''' <remarks></remarks>
    Private Sub DrawScreen(ByRef g As Graphics)
        For y As Integer = 0 To CardY
            For x As Integer = 0 To CardX
                If Card(y, x).Number <> MindGame.NothingCard Then
                    Card(y, x).Put(g)
                End If
            Next
        Next
    End Sub

 ''' <summary>
    ''' カードを表示する。
    ''' 画像の設定がされてなければ
    ''' 実行されない。
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Put(ByRef g As Graphics)
        Dim rect As Rectangle
        rect.Location = Location
        rect.Size = Size
        If Design IsNot Nothing And rect <> Nothing Then
            g.DrawImage(Design, rect)
        Else
            MessageBox.Show("位置とサイズと画像情報を設定してください。", _
            "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub