![]() |
Kollision mit Image und Maus ?
Hallo Alle!
Wie kann ich eine Kollision mit Image und Maus errechen? Ich kenne nur
Delphi-Quellcode:
Wie bekomme ich da die Maus rein?
Var
lSectionRect : TRect; begin For Test2 := 1 To I Do If (IntersectRect(lSectionRect, Image1.BoundsRect, Image2.BoundsRect)) Then begin …. Gruß Heike |
Re: Kollision mit Image und Maus ?
:gruebel:
OnMouseEnter / OnMouseLeave? EDIT: Ansonsten immer:
Delphi-Quellcode:
EDIT: Prozedur->Funkion :roll:
function MouseInRect(Rect: TRect; Control: TControl):Boolean;
var p: TPoint; begin p := Mouse.CursorPos; if Control <> nil then p := Control.ScreenToClient(p); Result := (p.X >= Min(Rect.Left, Rect.Right)) and (p.X <= Max(Rect.Left, Rect.Right)) and (p.Y >= Min(Rect.Top, Rect.Bottom)) and p.Y <= Max(Rect.Top, Rect.Bottom); end; |
Re: Kollision mit Image und Maus ?
Hi,
Falls das TImage kein ![]() ![]() könntest Du mit ![]() ![]() mfG mirage228 |
Re: Kollision mit Image und Maus ?
wie genau meinst du denn Kollision ?
- soll das Image sich darauf zubewegen und abprallen, oder weggeschubst werden von der Maus ? Denn dann bräuchtest du dazu noch eine Richtungsangabe, die du ja nicht durch "OnMouseEnter" und "OnMouseLeave" bekommen würdest, oder sehe ich das falsch ? --- ( Hab leider kein Delphi grade zur Hand, bald aber wieder ... ) --- |
Re: Kollision mit Image und Maus ?
Zitat:
Nicht ganz. Ein Image soll sich auf die Maus drauf zu bewegen. Wenn es getroffen hat, soll was ausgelösst werden. Gruß Heike |
Re: Kollision mit Image und Maus ?
Hallo Heike,
vielleicht hilft dir ja die Funktion ![]() Gruß Hawkeye |
Re: Kollision mit Image und Maus ?
Hallo Heike!
Du meinst, sobald der Mauscursor das Image berührt? Dann einfach OnMouseMove des Image verwenden. |
Re: Kollision mit Image und Maus ?
Zitat:
Mit OnMouseMove geht das nicht so ganz. Wenn die Maus nicht bewegt wird und das Image kommt unter der Maus, dann wird kein OnMouseMove ausgelöst. Gruß Heike |
Re: Kollision mit Image und Maus ?
Dann solltest du die Prüffunktion, die ich vorgeschlagen habe, verwenden, jedesmal wenn du das image bewegst.
|
Re: Kollision mit Image und Maus ?
Zitat:
ich würde im MouseMove und bei der Bewegung kontrollieren. |
Re: Kollision mit Image und Maus ?
Zitat:
Vielen Dank! Muss ich da was in den Uses setzen? Delphi kennt angeblich 'Result' nicht !? Gruß Heike |
Re: Kollision mit Image und Maus ?
Delphi-Quellcode:
sollte wohl so heissen:
procedure MouseInRect(Rect: TRect; Control: TControl);
Delphi-Quellcode:
Dann Klappt es auch mit dem Result. ;)
function MouseInRect(Rect: TRect; Control: TControl): Boolean;
|
Re: Kollision mit Image und Maus ?
Vielen Dank an Alle
Damit bin ich weiter gekommen. Gruß Heike |
Re: Kollision mit Image und Maus ?
Zitat:
Kann mir noch mal Einer bitte helfen. Wie frage ich mit der Function ab? Entweder ich bekomme einen Fehler (falsche Typen) oder zwar keinen Fehler, aber klappt dann auch nicht. Gruß Heike |
Re: Kollision mit Image und Maus ?
Hallo, natürlich muss es so sein:
Delphi-Quellcode:
Du solltest die unit Math einbinden und sie so aufrufen:
function MouseInRect(Rect: TRect; Control: TControl):Boolean;
var p: TPoint; begin p := Mouse.CursorPos; if Control <> nil then p := Control.ScreenToClient(p); Result := (p.X >= Min(Rect.Left, Rect.Right)) and (p.X <= Max(Rect.Left, Rect.Right)) and (p.Y >= Min(Rect.Top, Rect.Bottom)) and p.Y <= Max(Rect.Top, Rect.Bottom); end;
Delphi-Quellcode:
damit prüfst du, ob die Maus innerhalb des Rechtecks innerhalb des Controls liegt. für ein komplettes Image also:
if MouseInRect(rect(0,0,50,50),SomeControl) then
...
Delphi-Quellcode:
Sollte korrekte Resultate erzeugen.
if MouseInRect(rect(0,0,Image1.Width,Image1.Height),Image1) then
... |
Re: Kollision mit Image und Maus ?
Zitat:
Nochmals, vielen Dank, für Deine Geduld und Mühe. Gruß Heike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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