Jo du gør nedenstående 2 linier er taget fra din kode, jeg har fjernet resten af koden:
(Image1.Left >= Image2.Left) AND (Image1.Left <= Image2.Left+Image2.Width)
(Image1.Left >= Image2.Left) AND (Image1.Left <= Image2.Left+Image2.Width)
Jeg ved godt at de er 2 forskellige OR blokke men det retter ikke på at du spilder cpu på at teste på det samme 2 gange.
Det kunne spare ved at teste om den var sandt om om et af de 2 andre kriterier var sande.
noget i retning af:
(
((Image1.Left >= Image2.Left) AND (Image1.Left <= Image2.Left+Image2.Width))
AND(
((Image1.Top >= Image2.Top) AND (Image1.Top <= Image2.Top+Image2.Height))
OR
((Image1.Top <= Image2.Top) AND (Image1.Top >= Image2.Top-Image2.Height))
)
)
Og synes stadigvæk ikke du har argumenteret for hvad logikken skulle vøre i at sige at de billeder overlapper hvis det hvis afstanden fra billed 1 top ned til billed 2 top er mindre end billed 2 højde.
Så vidt jeg kan se ville den påstå at nedenstående firkanter
overlapper, A left er tydeligvis over B left men under B left + B width, og eftersom at B er 4 linier høj men a kun er 3 linier over B top er A top altså mindre end 4 linier fra B top.
A_____
| |
| |
-----
B_______
| |
| |
| |
| |
-------
Og bare fordi man får point for noget betyder altså ikke at det du har skrevet er korrekt, betyder kun at det ikke fejlede i posterens tests hvilket jo kunne bestå i noget så simpelt som at teste om din kode faktisk siger der er overlap når der er det, hvilket jo ikke vil fange at den siger overlap hvis der ikke er overlap.