Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Bug: IntersectRect liefert falsche Resultate

  Alt 29. Apr 2016, 12:03
Korrekt wäre es m.E. zum Beispiel so
Delphi-Quellcode:
FUNCTION MyIntersectRect(const A,B:TRect):Boolean;
begin
  Result:=(A.Left<B.Right) and (A.Right>B.Left) and (A.Top<B.Bottom) and (A.Bottom>B.Top);
end;
Das kann nicht richtig sein. Wenn z.B. (A.Left=B.Right) ist, schneiden sich die Rechtecke.

Bei Dir wird false geliefert: Irgendwo müssen auch <= bzw >= im Vergleich auftauchen. Im Original wird das durch das not erschlagen.
Nein, gerade das ist ja der Fehler in den Funktionen.
Im anhängenden Bild ist
A=Rect(35,5,65,35)
B=Rect(5,5,35,35)
A.Left = B.Right
Und wo überschneiden sich die Rechtecke?
Bedenke: B.Right liegt außerhalb der Fläche des Rechtecks B.
So ist nun einmal TRect definiert.
Left und Top liegen innerhalb der Fläche.
Right und Bottom liegen außerhalb der Fläche.
Angehängte Grafiken
 
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat