![]() |
Image bewegen
Hallo Leute;
Meine Frage heute, wie bringe ich ein Image dazu sich per Tastendruck zu bewegen? Danke schonmal für eure Antworten. |
Re: Image bewegen
Zur Änderung der Position musst Du Left bzw. Top des Image neu setzen. Und für Tastendrücke gibt es die Ereignisse OnKeyPress bzw. OnKeyDown. Falls Du noch weitere Komponenten auf dem Formular hast, solltest Du ggf. dessen Eigenschaft KeyPreview auf true setzen.
|
Re: Image bewegen
![]() Die Adresse würde ich bookmarken. [Edit] zu spät ? [/Edit] Gruß Wolfgang |
Re: Image bewegen
Dein Formular hat ein Event namens OnKeyDown. Dieses Event wird immer dann ausgelöst, wenn der Nutzer eine Taste drückt und das Formular den Fokus hat. Damit du weißt, in welche Richtung das Image bewegt werden soll, musst du natürlich noch abfragen, welche Tastae gedrückt wurde. Die Taste ist im Parameter "Key" angegeben, für die Pfeiltasten gibt es die Konstanten VK_LEFT, VK_RIGHT, VK_UP und VK_DOWN.
Lange Rede, kurzer Sinn:
Delphi-Quellcode:
Eine andere Möglichkeit wäre ein Timer/eine Schleife, in dem/der du den Zustand (Gedrückt/Nicht gedrückt) der Tasten selbst abfragst. Das ginge dann mit
procedure TForm1.FormKeyDown(..., const Key: integer, ...);
begin case Key of VK_LEFT: Image1.Left := Image1.Left - 10; VK_RIGHT: Image1.Left := Image1.Left + 10; VK_UP: Image1.Top := Image1.Top - 10; VK_DOWN: Image1.Top := Image1.Top + 10; end; end; ![]() |
Re: Image bewegen
Ich hab jetzt mal wieder ne Frage!
Ich habe diesen Quellcode geschrieben:
Delphi-Quellcode:
Und jetzt habe ich das Problem ,dass sich das Image bewegt und der grüne Punkt erst garnicht erscheint. :cry:
procedure TForm1.FormCreate(Sender: TObject);
var Bitmap:TBitmap; begin Bitmap:=TBitmap.Create; Bitmap.Width:=Image1.Width; Bitmap.Height:=Image1.Height; Image1.Picture.Graphic:=Bitmap; with Image1.Canvas do begin pen.color:=clGreen; pen.width:=10; MoveTo(500,500); end end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_LEFT: Image1.Left := Image1.Left - 10; VK_RIGHT: Image1.Left := Image1.Left + 10; VK_UP: Image1.Top := Image1.Top - 10; VK_DOWN: Image1.Top := Image1.Top + 10; end; end; end. |
Re: Image bewegen
Du erzeugst ein Bitmap, das Du aber nie benutzt. Zeichne statt auf den Canvas des Image lieber auf den der Bitmap und weise diese erst im Anschluss dem Image zu.
|
Re: Image bewegen
Und wie soll ich das machen?
Ich hab wirklich bis jetzt fast nur Ahnung von Rechenprogrammen und ein bisschen von Grafiken! |
Re: Image bewegen
Versuch es mal so (ungetestet):
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var Bitmap:TBitmap; begin Bitmap:=TBitmap.Create; try Bitmap.Width:=Image1.Width; Bitmap.Height:=Image1.Height; Bitmap.Canvas.pen.color:=clGreen; Bitmap.Canvas.pen.width:=10; Bitmap.Canvas.Ellipse(0,0,Bitmap.Width,Bitmap.Height); Image1.Picture.Graphic.Assign(Bitmap); finally Bitmap.Free; end end; |
Re: Image bewegen
Danke alles ist gut bis auf diese Zeile:
Image1.Picture.Graphic.Assign(Bitmap); Die funktioniert nicht ich weiß nicht warum :wiejetzt: . |
Re: Image bewegen
Das mach ich jedesmal falsch :wall:. Lass das "Graphic." einfach weg.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz