Plaatje Bewegen

Status
Niet open voor verdere reacties.

ninjaplayer

Gebruiker
Lid geworden
15 apr 2007
Berichten
603
Beste Visual Basic - Progammeurs

Hoe kan je een plaatje op een Windows Applicatie laten bewegen met behulp van de
pijltjes toetsen?
 
maak op je formulier een imagebox (of een picturebox...) aan en zet er het plaatje in.
dan zet je in de code (in mijn geval is het een picturebox)

Code:
Option Explicit

Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
    Case vbKeyLeft
        Picture1.Left = Picture1.Left - 50
    Case vbKeyRight
        Picture1.Left = Picture1.Left + 50
    Case vbKeyUp
        Picture1.Top = Picture1.Top - 50
    Case vbKeyDown
        Picture1.Top = Picture1.Top + 50
End Select
End Sub

zo kan je ook nog andere "keys" gebruiken.

V. :thumb:
 
Code:
Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
    Case vbKeyLeft
        Picture1.Left = Picture1.Left - 50
    Case vbKeyRight
        Picture1.Left = Picture1.Left + 50
    Case vbKeyUp
        Picture1.Top = Picture1.Top - 50
    Case vbKeyDown
        Picture1.Top = Picture1.Top + 50
End Select
End Sub
V. :thumb:

De "vbKeys" doen het niet.

Name "vbKeyLeft" not declared.
 
Probeer deze code:

Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Asc(e.KeyChar) = CInt(System.Windows.Forms.Keys.Escape) Then
Me.Close() ' hier je code
End If
End Sub 'OnKeyPress

Hier een voorbeeld als je esc in drukt moet je zelf effe de juiste toetsen zoeken
 
Code:
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
            If Asc(e.KeyChar) = CInt(System.Windows.Forms.Keys.Escape) Then
                Me.Close() ' hier je code
            End If
        End Sub 'OnKeyPress

Wat doet het?
 
Weet iemand nog hoe je een PictureBox moet bewegen met je pijltjestoetsen?
 
rustig, rustig
welke visual basic werk je? in 6.0 werkt vbKeyLeft gewoon

anders moet je mijn keyboard.bas bestand eens proberen: http://home.tiscali.nl/argonian/Keyboard.zip

deze voeg je toe aan je project en roep je dan aan via
Code:
PressKeyVK keyleft
(bijvoorbeeld)


V.:thumb:
 
2005 express dus ;-)
daar werkt mijn code idd niet mee. WILLIAMXXX' zijn code wel als het goed is.

V:thumb:
 
Je vroeg toch om een picturebox te verplaatsen met je pijltjestoetsen??

Dan zal het dat wel doen he;) !
 
Je vroeg toch om een picturebox te verplaatsen met je pijltjestoetsen??

Dan zal het dat wel doen he;) !
Ik wil niet ombeleefd doen :o maar ehhh...

Ik bedoel, hoe moet ik het gebruiken?. Ik kan het overal plakken waar ik wil zonder iets te
weten wat het is. Ja, het is een code...:confused:
 
maak op je formulier een imagebox (of een picturebox...) aan en zet er het plaatje in.
dan zet je in de code (in mijn geval is het een picturebox)

Code:
Option Explicit

Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
    Case vbKeyLeft
        Picture1.Left = Picture1.Left - 50
    Case vbKeyRight
        Picture1.Left = Picture1.Left + 50
    Case vbKeyUp
        Picture1.Top = Picture1.Top - 50
    Case vbKeyDown
        Picture1.Top = Picture1.Top + 50
End Select
End Sub

zo kan je ook nog andere "keys" gebruiken.

V. :thumb:

Het staat er toch zeer duidelijk, als je met je picturebox een key indrukt, staat er onder wat er gebeurd als je de pijltjestoetse indrukt!
vbKeyLeft --> hij gaat 50 naar links
vbKeyRight --> hij gaat 50 naar rechts
vbKeyUp --> hij gaat 50 naar boven
vbKeyDown --> hij gaat 50 naar beneden

Makkelijker kan het geloof ik niet:) !
 
Code:
Option Explicit

Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
    Case vbKeyLeft
        Picture1.Left = Picture1.Left - 50
    Case vbKeyRight
        Picture1.Left = Picture1.Left + 50
    Case vbKeyUp
        Picture1.Top = Picture1.Top - 50
    Case vbKeyDown
        Picture1.Top = Picture1.Top + 50
End Select
End Sub

V. :thumb:

Het staat er toch zeer duidelijk, als je met je picturebox een key indrukt, staat er onder wat er gebeurd als je de pijltjestoetse indrukt!
vbKeyLeft --> hij gaat 50 naar links
vbKeyRight --> hij gaat 50 naar rechts
vbKeyUp --> hij gaat 50 naar boven
vbKeyDown --> hij gaat 50 naar beneden

Makkelijker kan het geloof ik niet:) !

Ik bedoel die van WILLIAMXXX :thumb:
 
Laatst bewerkt:
Code:
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Asc(e.KeyChar) = CInt(System.Windows.Forms.Keys.Escape) Then
Me.Close() ' hier je code
End If
End Sub 'OnKeyPress
ik heb geen vb2005 maar deze code is wel makkelijk te begrijpen
Asc(e.KeyChar) dat is de toets die je indrukt.
als het Escape is (CInt(System.Windows.Forms.Keys.Escape)) dan
Me.Close()
het programa sluit dus af als je op escape drukt.
ik weet niet wat je er niet aan snapt??
 
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Asc(e.KeyChar) = CInt(System.Windows.Forms.Keys.Escape) Then
Me.Close() ' hier je code
End If
End Sub 'OnKeyPress

e is een event van het type System.Windows.Forms.KeyPressEventArgs. Deze wordt afgevuurd zodra er een knop wordt ingedrukt. De functie OnKeyPress wordt aangeroepen.

Vervolgens wordt wordt het event e.KeyChar gecast naar ASCII code en vergeleken met een key (in dit geval System.Windows.Forms.Keys.Escape).
Als de vergelijking klopt wordt het programma afgesloten.

Kan haast niet simpeler....
 
Asc(e.KeyChar) dat is de toets die je indrukt.
als het Escape is (CInt(System.Windows.Forms.Keys.Escape)) dan
Me.Close()
het programa sluit dus af als je op escape drukt.

Dat is wat ik niet snapte, bedankt :D
 
Laatst bewerkt:
Nu pas je gewoon de toets aan en de opdracht zo simpel is het...:D
 
ik zat met hetzelfde probleem en ik kreeg het ook niet opgelost, ik heb de code gebruikt. Met escape werkt hij. Maar ik heb de code iets aangepast:

Code:
  Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
        Label1.Text = Asc(e.KeyChar)
    End Sub

Zo kon ik zien wat voor code ze hebben, maar dit is het probleem druk ik pijltjestoetsen in komt er niks in mijn label terwijl als ik een "A" indruk er toch dit komt te staan 97. Hoe moet het dan?
 
Laatst bewerkt:
Cursortoetsen, control, alt, etc zijn zgn extended keycodes, die hebben geen ascii code
Je moet dan ook niet het KeyPress event gebruiken, maar het KeyDown Event

Code:
    Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        Debug.Print(e.KeyCode)
        If e.KeyCode = Keys.Left Then
           'etc
        End If
    End Sub

Je kunt zo ook shift, left, control en alt controleren - kijk maar eens naar het eventtype e
 
Cursortoetsen, control, alt, etc zijn zgn extended keycodes, die hebben geen ascii code
Je moet dan ook niet het KeyPress event gebruiken, maar het KeyDown Event

Code:
    Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        Debug.Print(e.KeyCode)
        If e.KeyCode = Keys.Left Then
           'etc
        End If
    End Sub

Je kunt zo ook shift, left, control en alt controleren - kijk maar eens naar het eventtype e


Heel erg bedankt alleen dat

Code:
Debug.Print(e.KeyCode)

had ik niet nodig.
error:
'print' is not a member of 'System.Diagnostics.Debug'.

Maar het werkt ook zonder dat. :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan