Die Breite des Rects ergibt sich ja aus Right - Left. Demzufolge wäre die Mitte (Right - Left) div 2. Davon ziehst Du nun noch die halbe Bildbreite ab. Das ist dann die linke Seite. Äquivalent geht das mit der Höhe.
[edit] Mal aus dem Kopf getippt, ich hoffe, das stimmt so:
Delphi-Quellcode:
procedure TForm1.pupImageAdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
begin
ARect.Left := ARect.Left + (ARect.Right - ARect.Left) div 2 - Image1.Picture.Width div 2;
ARect.Right := ARect.Left + Image1.Picture.Width;
ARect.Top := ARect.Top + (ARect.Bottom - ARect.Top) div 2 - Image1.Picture.Height div 2;
ARect.Bottom := ARect.Top + Image1.Picture.Height;
ACanvas.StretchDraw(ARect, Image1.Picture.Graphic) ;
end;
[/edit]