Bewegung...

Mailyn

Erfahrenes Mitglied
Also, wie kann man irgendein Objekt, zum Beispiel Label o.ä. von einem "Ort" auf dr Form zu einem Anderen bewegen und zwar gleichmäßig, also dass er Eindruck entsteht, es würde schweben? Jede einzelne Bewegung per Timer zu machen, ist mir viel zu aufwendig!
Hat jemand eine Idee?
 
Was ist daran aufwendig, es per Timer zu machen? Und was verstehst du unter "einzelne" Bewegung?
Mach doch einfach einen Timer, der das Label bei jedem Timer-Ereignis um beispielsweise 10 Einheiten nach rechts und 4 nach unten verschiebt, so lange, bis das Label am richtigen Platz angekommen ist.
 
Hallo Maylin,

du mit deinen Labels ;) :) .
Also die Methode mit dem Timer würde mir da trotzdem als sinnvollste einfallen. Das ist doch gar nicht aufwendig :confused: du schreibst einfach einen Code in der Art "label1.left = label1.left + 1" und stellst beim Timer einen beliebigen Intervall ein. Natürlich kannst du das ganze noch verfeinern, so zum Beispiel Variablen benutzen, die du während der Laufzeit änderst, und und und.
Ich wüsste jetzt auch keine andere Methode. Natürlich könntest du noch den gleichen Code in ein Button-Click-Ereignis einfügen oder die X-Koordinaten der Maus überprüfen und danach auch das Label ausrichten.
Wichtig ist nur, was du dir vorgestellt hast, wie du dein Label bewegen möchtest. Das Bewegen ist soweit nicht das Problem.

Es gibt sicherlich auch 'ne API, in der du eingeben kannst, welches die Startpostion, die Endpostition und die Schrittweite ist. Aber API's sehe ich persönlich immer als "Weed" an, du nimmst sie nur, wenn du sie brauchst oder wenn du dich schlecht fühlst ;) .

Solch eine API könntest du dir in einer ähnlichen Art auch zusammencoden. Einfach die Strecke zwischen den Punkten ermitteln und dann geteilt durch die Schrittweite.

Soweit meine Ideen.

(EDIT: Ah, Shakie ist wieder da - somit ist klar, dass ich zu spät war ;) //EDIT)

Ciao:
Da' Hacker

PS: Ich habe den Code aus dem anderen Thread editiert. Danke für den Hinweis. Das Größenzeichen war natürlich falsch.
 
Okay, aber wie geht's eigentlich, dass mein Timer jede z.B Sekunde das Label um die gegebene Zahl nach links bewegt?
 
Hi Mailyn,

net so ausführlich wie Da Hacker oder Shakie, aber

Intervall des Timers auf 1000 setzen

und im Timer Event

Label1.Left = Label1.Left - DeineVariable

Hope it helps
Das Orakel
 
Zuletzt bearbeitet:
Danke!! Hätt nich gedacht, dass des so einfach isch!
@Da Hacker:
Es gibt sicherlich auch 'ne API, in der du eingeben kannst, welches die Startpostion, die Endpostition und die Schrittweite ist.
Geht auch ohne API ::)
Code:
Private Sub Timer1_Timer()
			If Label2.Top <= 969 Then
		   Timer1.Enabled = False
		   Timer1.Interval = 0
Else
			Label2.Top = Label2.Top - 20
End If
		
End Sub
 
Zuletzt bearbeitet:
Hi Mailyn,

hättest du doch nur einen Absatz weitergelesen ;) :) :
DaHacker hat gesagt.:
Solch eine API könntest du dir in einer ähnlichen Art auch zusammencoden. Einfach die Strecke zwischen den Punkten ermitteln und dann geteilt durch die Schrittweite.
Dass du keine API brauchst, um ein Label zu bewegen, haben Shakie, ich und letztendlich auch Orakel deutlich klargemacht - denke ich :) . Nur leider war zu dem Zeitpunkt noch nicht klar, welche Art der Verschiebung du benutzt. Dann ist halt mein Vorschlag mit der API gefallen(obwohl ich persönlich etwas gegen API's habe!).
Das wichtigste ist, dass du ja jetzt die Lösung hast und ich nehme es dir auch nicht übel, dass du versuchst mich zu belehren ;) . *Joke*
Nunja, ich werde mich jetzt auch nicht so spät in der Nacht aufregen - schließlich habe ich in zwei Tagen Geburtstag :) .

Achso, vielleicht noch ein kleiner Verbesserungsvorschlag für deinen Code. Wenn du den Timer mit "Enabled = False" ausschaltest, dann musst du auch nicht den Intervall auf 0 stellen. Wenigstens etwas weniger Code ;) .

Ciao:
Da' Hacker
 
Hi.

Ich will auch das es so wirkt als schwebe die Grafik.

Das funktioniert ja auch ganz gut, nur die Grafik bewegt sich nicht fließend sondern ruckartig. Da VB die Grafik nur versetzt, wenn der Wert unter Left sich in einem bestimmten Rahmen verändert. Es sieht aus als ob sich die Grafik in zehner Schritten bewegt.

Ausserdem gibt es ein flackern in der Grafik wenn sie versetzt wird. Als ob der Rechner mit dem Laden der Grafik nicht hinterher kommt. Das verschieben sollte mein Rechner eigendlich schaffen. 1,8Ghz mit einer Radeon 9600XT und 512MB Arbeitsspeicher. die Grafik ist eine GIF-Datei mit einer Kantenlänge von 100 Pixeln.

Gibt es da eine Möglichkeit die Grafik in den Arbeitsspeicher zu laden damit sie nicht mehr flackert und wie bekommt man die Bewegungen flüssiger hin?

Grüße
 
Zurück