wohl eher so:
(Klammern)
Delphi-Quellcode:
X := (P.X - ImageList1.Width) div 2;
Y := (P.Y - ImageList1.Height) div 2;
Wohl eher nicht! Die linke Koordinate des Image bekommt man, wenn man vom Mittelpunkt die halbe Breite abzieht.
Beispiel: Rect(10, 10, 210, 210), ImageWidth = 100, ImageHeight = 100
P = CenterPoint(Rect) = (110, 110)
X = P.x - ImageWidth/2 = 110 - 50 = 60
Linke Kante des Bilds ist dann bei 60, was 50 von der linken Kante des Rechtecks (10) entfernt ist.
Rechte Kante des Bilds ist dann auf 60 + 100 = 160, was genau 50 von der rechten Kante (210) entfernt ist.
Mit deiner Formel käme man auf:
X = (P.x - ImageWidth)/2 = (105 - 100)/2 = 2.5
Damit liegt die linke Kante des Bilds schon mal außerhalb des Rechtecks...
was irgendwie nicht richtig aussieht.