![]() |
Überlappende Images abfragen.
Hallo Leute.
Ich habe auf einer Form, 2 mit der Maus bewegliche TImage. Wie kann ich herausfinden ob die Images teilweise übereinander geschoben wurden? |
Re: Überlappende Images abfragen.
Mit Image.Top, Image.Left, Image.Height und Image.Width kannst du das ganz leicht berechnen.
|
Re: Überlappende Images abfragen.
Das ist ja wohl klar, aber die Frage ist wie, bzw. wie am einfachsten. Das Rad muss ja nicht zweimal erfunden werden. Welcher von unseren Spieleprogrammierer kannt sich da aus?
|
Re: Überlappende Images abfragen.
Moin!
Schau dir mal die WinAPI Funktion IntersectRect() an - die gibt dir bei Übergabe von 2 Rechtecken zum einen zurück, ob diese sich überschneiden und zum anderen sogar das Rechteck der Überschneidung selber. MfG Muetze1 |
Re: Überlappende Images abfragen.
Vielen Dank auch, die IntersectRect() Funktion ist genau das was ich brauche. Hast Du damit schon Erfahrung sammeln können?
|
Re: Überlappende Images abfragen.
![]() |
Re: Überlappende Images abfragen.
Moin!
Zitat:
MfG Muetze1 |
Re: Überlappende Images abfragen.
Ich habe hier mal den Code getestet. Ich habe eine Form und zwei bewegliche TPanels. Wenn einer der beiden TPanels sich überschneiden, soll ein Ereignis ausgelöst werden. Leider geht es nicht! Was mache ich da falsch?
Delphi-Quellcode:
var schnittmenge, APanel, BPanel: TRect;
begin schnittmenge := Rect(80, 80, 80,80); APanel := Rect(Panel1.left,Panel1.Top, Panel1.left+Panel1.Width,Panel1.Top+Panel1.Height); BPanel := Rect(Panel2.Left, Panel2.Top, Panel2.Left+Panel2.Width,Panel2.Top+Panel2.Height); if intersectrect(Schnittmenge, APanel, BPanel) then Close; end; |
Re: Überlappende Images abfragen.
Steht der Code im OnMouseMove?
Mfg ReDoX |
Re: Überlappende Images abfragen.
Nein, In OnMouseUp. Aber auch wenn er in einem Button.click ist geht er nicht.
|
Re: Überlappende Images abfragen.
Liste der Anhänge anzeigen (Anzahl: 1)
Moin!
Dann weiss ich nicht was du da programmierst. Ich habe im Anhang mir mal ein kleines Projekt zusammengeklickt und das funktioniert einwandfrei. Vergleich sonst mal den Code und schau nach was du anders machst. Das Überschneidungsrechteck muss nicht initialisiert werden - wenn, dann schreibt dir die InterSectRect() Funktion dort das Überschneidungsrechteck rein. MfG Muetze1 |
Re: Überlappende Images abfragen.
Vielen Dank Muetze1, für Deine Mühe! Natürlich hat Dein Listing geklappt. Du wirst lachen, der Code von mir ging doch, aber nicht im OnMouseUp. Warum, kann ich mir nicht erklären. Das war wohl ein Denkfehler von mir. Den Weg den Du gegangen bis, ist natürlich wesendlich besser. So konnte ich wenigstens von einem erfahrenen Programmierer was dazu lernen. Danke noch mal.
|
Re: Überlappende Images abfragen.
Moin!
Zitat:
a) der Code nur schnell hingeklatscht ist - unsicher und unprofessionell b) man grundlegend eigentlich keine Panels durch die Gegend schiebt MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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