Schlieren bei bewegen von Pictureboxen

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von davidtrixx.

    Schlieren bei bewegen von Pictureboxen

    Hey Leute,
    ich hab endlich mein erstes Problem gelöst und kaum ist das gelöst hab ich schon ein neues ^^
    Es geht darum wenn ich eine eine Picturebox bewege das Schlieren enstehen. Also die Bilde wiederholen sich und ziehen hinterher, erst wenn ich die Picterbox los lasse, dann ist es wieder normal bzw dann steht nur noch die eine Picterbox.

    Hoffe ihr habt mich verstanden und könnt mir helfen :D

    Mit freundlichen Grüßen,
    davidtrixx
    Jou.

    davidtrixx schrieb:

    erst wenn ich die Picterbox los lasse, dann ist es wieder normal
    Das ist halt bei WinForm so.
    Wozu willst Du denn PictureBoxen bewegen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nun wenn ich die .exe starte dann bessert sich auch nichts. ,,Wozu willst Du denn PictureBoxen bewegen ? ''

    Es hat eigentlich ein Projekt ohne gro ße Idee dahinter. Einfach um es auszuprobieren. Hab eine Verknüfpung auf den Destop erstellt, also die .exe hab ich aus dem Debug Ordner.

    davidtrixx schrieb:

    ohne große Idee dahinter.
    Dann mach da auch kein Problem draus. :D
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    davidtrixx schrieb:

    nicht einfach abbrechen
    Poste bitte mal Deinen Code.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    der Code dürfte völlig Egal sein. PictureBox+Bewegen sofern es sich nicht um einen Sprung handelt ist falsch.

    Verwende GDI+ und zeichne damit im Paint-Event, speichere die Position deines Bildes und verändere diese mit einem Timer(o.ä.) und rufe Invalidate für das jeweilige Control auf.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Property toMove As Boolean
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. End Sub
    5. Private Sub ToolTip1_Popup(sender As Object, e As PopupEventArgs)
    6. End Sub
    7. Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
    8. End
    9. End Sub
    10. Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    11. End Sub
    12. Public Class Form1
    13. Private toMove As Boolean
    14. End Class
    15. Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
    16. toMove = True
    17. End Sub
    18. Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
    19. If toMove Then
    20. PictureBox1.Location = e.Location
    21. End If
    22. End Sub
    23. Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp
    24. toMove = False
    25. End Sub
    26. End Class


    O.o wie mach ich das genau mit dem GDI+ , Paint Event und mit dem Timer. Bin totaler Anfänger..

    davidtrixx schrieb:

    wie mach ich das genau mit dem GDI+
    So, Form mit Button:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Property toMove As Boolean
    3. Private bmp As Bitmap
    4. Private pt As Point
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Using dlg As New OpenFileDialog
    7. If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. bmp = New Bitmap(dlg.FileName)
    9. End If
    10. End Using
    11. End Sub
    12. Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
    13. toMove = True
    14. pt = e.Location
    15. Me.Invalidate()
    16. End Sub
    17. Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove
    18. If toMove Then
    19. pt = e.Location
    20. Me.Invalidate()
    21. End If
    22. End Sub
    23. Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp
    24. toMove = False
    25. End Sub
    26. Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
    27. If bmp Is Nothing Then
    28. Return
    29. End If
    30. e.Graphics.DrawImage(bmp, pt)
    31. End Sub
    32. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    o_o .. wie soll ich den Code bei mir einbinden ?
    Butten1 soll ich dann durch PictureBox1 ersetzen, denk ich mal.
    Aber Form1_MousDown, warum Form1 ? oder soll ich das auch durch PictureBox1 ersetzen ?
    Mit dem Rest bin ich etwas überfordert ._. Ich muss das Projekt fertig kriegen, da es meine Praktikum Aufgabe ist ^^
    Mit dem Button öffnet er doch nur nen Dialog zur Auswahl des Bildes...
    Wenn das geschehen ist wird beim gedrückthalten der Maus das Bild eingeblendet und beim Bewegen der Maus wird das Bild verschoben.

    Du musst dir dafür nur ne Form erstellen (Form1) und nen Button drauf klatschen (Button1) und das war es. Code drüber kopieren und es funktioniert.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    @MemoAnMichSelbst Jou.

    davidtrixx schrieb:

    bei mir einbinden ?
    Mach Dir ein neues Projekt:

    RodFromGermany schrieb:

    Form mit Button
    und füge dort den kompletten Code in die Form1.vb ein.
    Starten und feddich. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der Code ist an sich nicht schlecht :D Danke nochmal !

    Aber letzendlich ist was ganz anderes was ich eigentlich geplant hatte ^^
    Nun eigentlich hab ich an der Seite 3 Pictureboxen die ich Bewegen möchte.
    Kann ich ja nur es enstehen halt schlieren. Was kann man dagegen machen ? Wenn ich beim Button ein Bild auswähle und das dann bewege dann entstehen ja keine Schlieren ^^ Wie kann ich das in meinem Code beheben ?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private toMove As Boolean
    3. Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    4. toMove = True
    5. End Sub
    6. Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    7. If toMove Then
    8. PictureBox1.Location = e.Location
    9. End If
    10. End Sub
    11. Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    12. toMove = False
    13. End Sub
    14. Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
    15. End Sub
    16. Public Class Form1
    17. Private toMove As Boolean
    18. End Class
    19. Private Sub PictureBox2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseDown
    20. toMove = True
    21. End Sub
    22. Private Sub PictureBox2_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseMove
    23. If toMove Then
    24. PictureBox2.Location = e.Location
    25. End If
    26. End Sub
    27. Private Sub PictureBox2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseUp
    28. toMove = False
    29. End Sub
    30. Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
    31. End Sub
    32. Public Class Form2
    33. Private toMove As Boolean
    34. End Class
    35. Private Sub PictureBox3_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox3.MouseDown
    36. toMove = True
    37. End Sub
    38. Private Sub PictureBox3_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox3.MouseMove
    39. If toMove Then
    40. PictureBox3.Location = e.Location
    41. End If
    42. End Sub
    43. Private Sub PictureBox3_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox3.MouseUp
    44. toMove = False
    45. End Sub
    46. End Class
    @RodFromGermany hat dir einen C&P Code gegeben, warum hast du immernoch diese PictureBox?
    Der Code ansich ist sehr schlecht, nur weil etwas fast funktioniert wie man es möchte ist es nicht gut.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich hab den Code kurz benutzt aber benutze jetzt wieder meinen, da es an sich was ganz anderes ist. Ich hab an der Seite 3 Pictureboxen und möchte sie bewegen können ohne das diese Schlieren enstehen.
    Wie muss ich also meinen jetzigen Code umschreiben ?

    davidtrixx schrieb:

    Ich hab an der Seite 3 Pictureboxen und möchte sie bewegen können ohne das diese Schlieren enstehen.

    Das wird nicht funktionieren. Dafür sind PicBoxen nicht gedacht.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    davidtrixx schrieb:

    ohne das diese Schlieren enstehen.
    Nimm keine PictureBoxen.
    Nimm GDI+.
    Verstehe mein Beispiel.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    davidtrixx schrieb:

    wenn ich nichts an VB.net verstehe

    Dann ist dein Vorhaben mit deinem aktuellen Wissenstand nicht umsetzbar.

    Da bleiben dir nur 2 möglichkeiten.
    1. Du lebst mit dem "schlieren"
    2. du lernst richtig VB.net
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."