Forum: Programmieren allgemein
by Amateurprofi,
30. Apr 2016
Nein, es ist genau umgekehrt.
Die Zeichenfunktionen arbeiten korrekt und IntersectRect und IntersectsWith arbeiten falsch.
Den Funktionen werden als Parameter TRect's übergeben und TRect ist nun einmal so definiert, dass Right und Bottom außerhalb der Fläche liegen.
Merke:
Eine Funktion arbeitet dann korrekt wenn sie das macht was der zugehörigen Dokumentation steht.
Ob dass dann auch den...
Forum: Programmieren allgemein
by Amateurprofi,
29. Apr 2016
Ich sprach (schrieb) nicht über EIN Rechteck, das wie auch immer durch eine Linie geteilt ist sondern über ZWEI aneinander grenzende Rechtecke.
Bleiben wir trotzdem bei Deinem Beispiel.
Wir haben also ein Rechteck.
Der obere linke Eckpunkt soll bei 5,5 liegen und es soll 60 Pixel breit und 30 Pixel hoch sein.
Nun trennen wir es in der Mitte durch eine senkrechte Linie und nennen den linken...
Forum: Programmieren allgemein
by Amateurprofi,
29. Apr 2016
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.
Forum: Programmieren allgemein
by Amateurprofi,
29. Apr 2016
Ich hatte kürzlich in einem Programm unerwartete Fehler registriert und dann festgestellt, dass die Funktionen IntersectRect und Rect.IntersectsWith, beide in System.Types, falsche Resultate liefern, wenn die beiden Rechtecke direkt aneinander grenzen.
Beide Funktionen betrachten Rect.Right und Rect.Bottom als innerhalb der Fläche des Rechtecks.
Tatsächlich liegen Rect.Right und Rect.Bottom...