Delphi-PRAXiS
Seite 1 von 10  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Image bewegen (https://www.delphipraxis.net/144048-image-bewegen.html)

Jonski 28. Nov 2009 20:33


Image bewegen
 
Hallo Leute;

Meine Frage heute, wie bringe ich ein Image dazu sich per Tastendruck zu bewegen?

Danke schonmal für eure Antworten.

DeddyH 28. Nov 2009 20:37

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.

Wolfgang Mix 28. Nov 2009 20:39

Re: Image bewegen
 
hier im Feld "Search" Move Image eingeben.

Die Adresse würde ich bookmarken.

[Edit] zu spät ? [/Edit]

Gruß

Wolfgang

Namenloser 28. Nov 2009 20:42

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:
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;
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 Delphi-Referenz durchsuchenGetAsncKeyState.

Jonski 28. Nov 2009 21:01

Re: Image bewegen
 
Ich hab jetzt mal wieder ne Frage!

Ich habe diesen Quellcode geschrieben:
Delphi-Quellcode:
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.
Und jetzt habe ich das Problem ,dass sich das Image bewegt und der grüne Punkt erst garnicht erscheint. :cry:

DeddyH 28. Nov 2009 21:06

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.

Jonski 28. Nov 2009 21:15

Re: Image bewegen
 
Und wie soll ich das machen?

Ich hab wirklich bis jetzt fast nur Ahnung von Rechenprogrammen und ein bisschen von Grafiken!

DeddyH 28. Nov 2009 21:20

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;

Jonski 28. Nov 2009 21:25

Re: Image bewegen
 
Danke alles ist gut bis auf diese Zeile:

Image1.Picture.Graphic.Assign(Bitmap);

Die funktioniert nicht ich weiß nicht warum :wiejetzt: .

DeddyH 28. Nov 2009 21:27

Re: Image bewegen
 
Das mach ich jedesmal falsch :wall:. Lass das "Graphic." einfach weg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Seite 1 von 10  1 23     Letzte »    

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