none
Ayuda TileMap Editor en vb.net 2010 RRS feed

  • Pregunta

  • hola tengo el siguiente código escrito en vb.net 2010

    Public Class Form1
    
        Private BrushesColor As Color = Color.FromArgb(0, 100, 255)
        Private G As Graphics
        Private m_mapWidth As Integer = 22, m_mapHeight As Integer = 14
        Private m_tileWidth As Integer = 32, m_tileHeight As Integer = 32
    
        Private tile(m_mapWidth, m_mapHeight) As Integer
    
        Private mousex, mousey As Integer
        Private IsMouseDown As Boolean = False
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            G = Me.CreateGraphics
            Me.Size = New Size(711, 476)
            Me.StartPosition = FormStartPosition.CenterScreen
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog
            Me.MaximizeBox = False
            Me.BackColor = Color.Black
        End Sub
    
        Private Sub Form1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
            mousex = Math.Floor(Math.Floor(e.X / m_tileWidth))
            mousey = Math.Floor(Math.Floor(e.Y / m_tileHeight))
    
            If e.Button = Windows.Forms.MouseButtons.Left Then
                IsMouseDown = True
                DrawTile(mousex, mousey)
            End If
        End Sub
    
        Private Sub Form1_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
            mousex = Math.Floor(Math.Floor(e.X / m_tileWidth))
            mousey = Math.Floor(Math.Floor(e.Y / m_tileHeight))
    
            If IsMouseDown = True Then
                DrawTile(mousex, mousey)
            End If
    
            Me.Text = "(X: " & mousex & ", Y: " & mousey & ")"
        End Sub
    
        Private Sub Form1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
            If e.Button = Windows.Forms.MouseButtons.Left Then
                IsMouseDown = False
            End If
        End Sub
    
        Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
            For x = 0 To m_mapWidth
                For y = 0 To m_mapHeight
                    If tile(x, y) = 1 Then
                        e.Graphics.FillRectangle(New SolidBrush(BrushesColor), x * m_tileWidth, y * m_tileHeight, m_tileWidth, m_tileHeight)
                    End If
                Next
            Next
        End Sub
    
        Private Sub DrawTile(ByVal x As Integer, ByVal y As Integer)
            If (x >= 0 And x < m_mapWidth) And (y >= 0 And y < m_mapHeight) Then
                tile(x, y) = 1
                G.FillRectangle(New SolidBrush(BrushesColor), x * m_tileWidth, y * m_tileHeight, m_tileWidth, m_tileHeight)
            End If
        End Sub
    
    End Class

    todo funciona bien, pero cuando intento mover el mouse rápidamente para pintar mas rápido este se vuela algunas casillas.

    vista previa del error:

    TestTileMaEditor

    Ahora mi pregunta es: ¿como puedo corregir este error?

    espero puedan ayudarme.

    un saludo y gracias..........


    • Editado luislasonbra domingo, 20 de octubre de 2013 3:23 falta de contenido
    • Cambiado Enrique M. Montejo domingo, 27 de octubre de 2013 10:26 Windows Forms
    domingo, 20 de octubre de 2013 3:20

Todas las respuestas

  • he probado tu código, pero sigue saltándose cuadros.

    creo que es por las coordenadas del formulario.

    he probado las coordenadas del formulario y al tratar de mover el mouse rápidamente se vuela algunos coordenadas.

    domingo, 20 de octubre de 2013 12:57
  • hola he buscado informacion sobre "LineDDA()" y he visto que solo se pueden dibujar lineas y nada mas.

    ademas no entiendo nada de nada, de como usar esa funcion en vb.net

    si pudieras realizar algun codigo de ejemplo o algo por el estilo para poder usar esta funcion en vb.net

    lunes, 21 de octubre de 2013 5:21