Autor Beitrag
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.06.09 11:17 
Ich werfe dann mal IntersectRect in den Raum.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function RectsTouching(const Rect1, Rect2: TRect): Boolean;
var dummy: TRect;
begin
  Result := IntersectRect(dummy,Rect1,Rect2);
end;
Waldkauz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Mo 22.06.09 21:29 
user profile iconSvenAbeln hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function CheckCollision(FirstImage, SecondImage: TImage): boolean;
var
  FirstImgRect, SecondImgRect: TRect;
begin
  FirstImgRect := FirstImage.BoundsRect;
  SecondImgRect := SecondImage.BoundsRect;

  Result := (FirstImgRect.Left <= [b]SecondImageRect[/b].Right) and (FirstImgRect.Right>= SecondImageRect.Left)
        and (FirstImgRect.Top) <= [b]SecondImageRect[/b].Bottom) and (FirstImgRect.Bottom >= SecondImageRect.Top);
end;

Dies erkennt auch, wenn ein Bild komplett in dem Anderen liegt.

danke, aber irgendwo ist da ein Fehler. Mit dem End oder mit den Klammern stimmt was nicht, aber ich komm nicht drauf...(den Fehler, dass du "SecondImageRect" statt "SecondImgRect" geschrieben hast, hab ich schon verbessert)

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

War nur ein kleiner Klammerfehler.
Kann man diese Funktion auch für ein Image und ein Shape verwenden?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.06.09 22:15 
Wenn man die Parameter etwas ändert und gleich die Rects übergibt, wieso nicht?
Waldkauz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Mo 22.06.09 22:22 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Wenn man die Parameter etwas ändert und gleich die Rects übergibt, wieso nicht?


wie denn?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.06.09 22:26 
Ich nehm jetzt mal meine Funktion von oben, weil die kürzer ist:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function RectsTouching(const Rect1, Rect2: TRect): Boolean;
var dummy: TRect;
begin
  Result := IntersectRect(dummy,Rect1,Rect2);
end;

procedure TFormMain.Irgendwas;
begin
  if RectsTouching(MyShape.BoundsRect, MyImage.BoundsRect) then
    ShowMessage('Kollision');
end;

Analog würde das natürlich auch mit der anderen Funktion funktionieren, wenn man die entsprechend umstellt.
Waldkauz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Mo 22.06.09 22:34 
Super, thx!