Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Überlappende Images abfragen. (https://www.delphipraxis.net/40211-ueberlappende-images-abfragen.html)

smart 12. Feb 2005 14:26


Ü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?

Torpedo 12. Feb 2005 14:29

Re: Überlappende Images abfragen.
 
Mit Image.Top, Image.Left, Image.Height und Image.Width kannst du das ganz leicht berechnen.

smart 12. Feb 2005 14:49

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?

Muetze1 12. Feb 2005 14:52

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

smart 12. Feb 2005 15:05

Re: Überlappende Images abfragen.
 
Vielen Dank auch, die IntersectRect() Funktion ist genau das was ich brauche. Hast Du damit schon Erfahrung sammeln können?

Elite 12. Feb 2005 15:13

Re: Überlappende Images abfragen.
 
Hier wurde auch ein Beispiel für IntersectRect() gepostet.

Muetze1 12. Feb 2005 16:16

Re: Überlappende Images abfragen.
 
Moin!

Zitat:

Zitat von smart
Vielen Dank auch, die IntersectRect() Funktion ist genau das was ich brauche. Hast Du damit schon Erfahrung sammeln können?

Ja klar - bei einer grösseren grafischen Anwendung von mir überprüfe ich damit ob ein Element neu gezeichnet werden muss - also sprich ob es eine Überschneidung zwischen dem ClipRect des Canvas und dem ElementRect des Elementes gibt.

MfG
Muetze1

smart 13. Feb 2005 08:36

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;

ReDoX 13. Feb 2005 08:59

Re: Überlappende Images abfragen.
 
Steht der Code im OnMouseMove?
Mfg ReDoX

smart 13. Feb 2005 09:14

Re: Überlappende Images abfragen.
 
Nein, In OnMouseUp. Aber auch wenn er in einem Button.click ist geht er nicht.

Muetze1 13. Feb 2005 14:13

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

smart 13. Feb 2005 15:37

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.

Muetze1 13. Feb 2005 19:35

Re: Überlappende Images abfragen.
 
Moin!

Zitat:

Zitat von smart
So konnte ich wenigstens von einem erfahrenen Programmierer was dazu lernen.

Lern lieber nicht davon, weil ...

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