Blöde frage ABER:
Code:
function RectInRect(const Rect1, Rect2: TRect): Boolean;
begin
Result := (Rect1.Left >= Rect2.Left) and
(Rect1.Right <= Rect2.Right) and
(Rect1.Top >= Rect2.Top) and
(Rect1.Bottom <= Rect2.Bottom);
end;
//oder
function OverlapRect(const Rect1, Rect2: TRect): Boolean;
begin
Result := (Rect1.Left < Rect2.Right) and
(Rect1.Right > Rect2.Left) and
(Rect1.Top < Rect2.Bottom) and
(Rect1.Bottom > Rect2.Top);
end;
Kann es nicht sein das obige funktionen beide nicht zum ziel führen? Die overlap zum beispiel erfordert doch das ALLE4 punkte des ersten im zweiten Rect liegen. Overlap heißt für mich aber auch das schon ein punkt im Anderen rechteck genügt o.O(ebend überlappend/überschneidend)
Korrektes Overlapping müsste doch so aussehen(oder nicht?):
Code:
function IsOverlapping(ARect1, ARect2: TRect): Boolean;
begin
Result := NOT((ARect1.Left > ARect2.Right) OR (ARect1.Right < ARect2.Left) OR (ARect1.Top < ARect2.Bottom) OR (ARect1.Bottom > ARect2.Top));
end:
MFG
Memnarch