AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Image bewegen

Ein Thema von stylerkorn · begonnen am 23. Feb 2009 · letzter Beitrag vom 24. Feb 2009
Antwort Antwort
stylerkorn

Registriert seit: 2. Feb 2009
1 Beiträge
 
#1

Image bewegen

  Alt 23. Feb 2009, 08:32
Hallo,

Ich möchte das ein Image von links nach rechts einer form wandert udn hab dies hiermait versucht.

Delphi-Quellcode:
begin
  for n:=1 to 400 DO
  begin
    Image1.left:=n;
    sleep(1);
  end;
end;

leider springt er imemr direkt 400 Punkte nach rechts.

Wollte mal fragen ob ich das ändern kann oder ob ich anders herangehen soll.

[edit=mkinzler]Delphi-Tags eingefügt, bitte in Zukunft verwenden Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Image bewegen

  Alt 23. Feb 2009, 08:34
sleep(1); <- Hiermit wird der ganze Prozess lahm gelegt. Also nix mit neuzeichnen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#3

Re: Image bewegen

  Alt 23. Feb 2009, 12:33
versuchs mal so:

Delphi-Quellcode:
  for n:=1 to 400 DO
  begin
    Image1.left:=n;
    application.processmessages;//Nachrichtenschlange abarbeiten (neuzeichnen)
    sleep(100); //millisekunden :) 1 dürfte zu kurz sein
  end;
HTH Frank
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Image bewegen

  Alt 23. Feb 2009, 13:45
Zitat von _frank_:
versuchs mal so:

Delphi-Quellcode:
  for n:=1 to 400 DO
  begin
    Image1.left:=n;
    application.processmessages;//Nachrichtenschlange abarbeiten (neuzeichnen)
    sleep(100); //millisekunden :) 1 dürfte zu kurz sein
  end;
HTH Frank
100 dürfte zu lang sein

400*100 = 40000 = 40 Sekunden für 400 Pixel
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#5

Re: Image bewegen

  Alt 23. Feb 2009, 13:56
1 gibt es eh nicht ... das würde sich dann vermutlich so bei 4-5 ms einpendeln.
wie wär's mit 10?


Was willst du denn bewegen?
Womöglich ließe es sich ja auch noch anders/besser lösen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#6

Re: Image bewegen

  Alt 23. Feb 2009, 14:26
Am elegantesten wäre hier wohl die Verwendung von einem Timer (da Threads und VCL sone Sache sind). Außerdem solltest du, falls du das Bild nur zum Anzeigen brauchst (keine Events wie Anklicken, Drag oder was auch immer), überlegen, ob du es nicht direkt auf die Form zeichnen kannst, statt ein Image zu nehmen.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
Noedel
(Gast)

n/a Beiträge
 
#7

Re: Image bewegen

  Alt 23. Feb 2009, 14:33
Zitat von himitsu:
1 gibt es eh nicht ... das würde sich dann vermutlich so bei 4-5 ms einpendeln.
wie wär's mit 10?


Was willst du denn bewegen?
Womöglich ließe es sich ja auch noch anders/besser lösen.
schon rein technisch/optisch geht das nich
1) mein Bildschirm hat ne Reaktionszeit von 5 ms
2) und wenn ich mich nich irre, macht das Auge eh bloß 26 Bilder * Sek^-1, also alle 38ms...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#8

Re: Image bewegen

  Alt 23. Feb 2009, 14:55
Sleep arbeitet intern mit GetTickCount und das hat keine Auflösung im Millisekundenbereich (meißt nur so 8ms-intervall)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#9

Re: Image bewegen

  Alt 24. Feb 2009, 02:49
Zitat von Neutral General:
100 dürfte zu lang sein
400*100 = 40000 = 40 Sekunden für 400 Pixel
ist schon richtig, aber war ja nur ein Beispiel
Der Hauptgedanke meines Wertes war, dass er seine Bewegung auch sieht, wie lange das dauert, muss er halt variieren
ich würde auch kein Image auf dem Form hin und her schieben, aber das ist ne andere Sache.
Für Bewegungen gibts offscreen-Bitmaps, die auf ein Canvas geblittet werden oder bei umfangreicheren Geschichten Hardware-gestützte Rendering-Methoden (DirectX, OpenGL).
alternativ lässt sich das ganze auch mit einem TTimer machen, dann kann man sich das ProcessMessages auch sparen.

mal fix ausm Hut zusammengetippelt

Delphi-Quellcode:
procedure TMyForm.Timer1Timer(...);
begin
  if image.left>=400 then
    timer1.enabled:=false
  else
  begin
    image1.Left:=image1.left+1;
  end;
end;
Gruß Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz