Entwickler-Ecke

Multimedia / Grafik - timage für bewegung


detlef-d - Mi 02.06.10 19:50
Titel: timage für bewegung
hi,
ich will ein bild mithilfe von tastatur befehlen steuern, mit den auswertung der tasen habe ich kein problem nur mit dem bild: wenn ich mit canvas etwas zeiche funktioniertz alles prima nun möchte ich jedoch ein richtiges bmp bild einbinden.
dafür nutze Image1.picture.loadfromfile('C:.figur.bmp')
dei datei wird auch geladen doch nun möchte ich sie verschieben und stehe auch dem schlauch muss ich dann von timage die koordinaten ändern bzw wie und was wäre der vorteil wenn das bild in der imagelist wäre.

gruß detlef

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


platzwart - Mi 02.06.10 20:31


Delphi-Quelltext
1:
2:
Image1.Left:= Image1.Left + 10;
Image1.Top:= Image1.Top - 5;


detlef-d - Mi 02.06.10 20:50

top danke funktioniert:)
kann ich mir jetzt noch die aktuellen postitions daten ausgeben lassen?


Hidden - Mi 02.06.10 21:18

Hi :)

Die aktuelle Position steht in genau der Variable, in die du sie gerade reingeschrieben hast: Image1.Left/Top ;)

Mach' erstmal so weiter, und lies eventuell auch mal den Crashkurs von Christian S. [http://www.christian-stelzmann.de/artikel/CrashkursReloaded/]. Wenn du ein bisschen mehr Übung hast, solltest du dir aber einmal die Klasse TPaintbox ansehen. Die ist für Bewegungen etwas geeigneter.
Du lädst dann das Bild zunächst einfach nur in den Speicher(ohne es auf den Bildschirm zu zeichnen), in TBitmap. Dann kannst du jederzeit mit Paintbox1.Repaint; das alte Bild löschen, und alles neu zeichnen. In Paintbox1.OnPaint kommt dann beispielsweise ein Paintbox1.Canvas.Draw(AutoX, AutoY, BmpAuto);, und Paintbox1.OnPiant wird jedes Mal aufgerufen, wenn auch Windows die stelle neu zeichnet - beispielsweise, weil ein anderes fenster darüber gezogen wird.

Der Vorteil: Nur eine vcl-Komponente(1 Paintbox), statt potentiell 600 einzelne TImages.

lg,