Entwickler-Ecke

Multimedia / Grafik - Images: überschneiden


Daniel_100 - So 03.08.03 19:48
Titel: Images: überschneiden
Hallo!

Mein Programm soll eine Meldung ausspuken, wenn sich zwei Images an irgendeiner Stelle überschneiden. Geht das?

Danke

Daniel


Aya - So 03.08.03 19:54

Hi,

klar... einfach überprüfen ob:


Delphi-Quelltext
1:
((Image1.Left + Image1.Width > Image2.Left) and (Image1.Left < Image2.Left + Image2.Width)) or ((Image1.Top + Image1.Height > Image2.Top) and (Image1.Top < Image2.Top + Image2.Height))                    


Ist jetzt einfach so aus dem kopf geschrieben, kann sein das tippfehler oder so drin sind ;)

Ist allerdings nur die überprüfung für die obere + linke kante.. die anderen beiden kannste aber leicht selber dazubasteln ;)

Au'revoir,
Aya~


Daniel_100 - So 03.08.03 20:12

Sorry, aber irgendwie funktioniert das nicht (mit if-then). Ich hab jetzt versucht, den Rest hinzuzufügen: nix. Vielleicht bin ich einfach nur zu blöd :oops: . Könntest du (oder jemand anders) dann den gesamten Code aufschreiben...

Danke


Aya - So 03.08.03 20:43

Hi,

na gut... hier mal nen ganzer Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function TForm1.CollisionTest: Boolean;
begin
  Result:=
    (((Image1.Left > Image2.Left) and (Image1.Left < Image2.Left + Image2.Width)) or
    ((Image1.Left + Image1.Width > Image2.Left) and (Image1.Left + Image1.Width < Image2.Left + Image2.Width))) and
    (((Image1.Top > Image2.Top) and (Image1.Top < Image2.Top + Image2.Height)) or
    ((Image1.Top + Image1.Height > Image2.Top) and (Image1.Top + Image1.Height < Image2.Top + Image2.Height)));
end;


Au'revoir,
Aya


maximus - So 03.08.03 23:39

wahlweise könnte die funktion...


Delphi-Quelltext
1:
function IntersectRect(out Rect: TRect; const R1, R2: TRect): Boolean;                    


... auch weiterhelfen! Ist aber im prinzip das selbe :wink: