Die Berechnung sollte doch nicht so schwer sein.
Die Form1.ClientWidth wird durch die Anzahl der TImages geteilt. Damit hat man den Platz für jedes Bild einschließlich Ränder. Für die Ränder links und rechts zieht man die Imagebreite ab und teilt durch zwei, wobei man den Rest der ClientWidth, welche durch die ganzzahlige Division übriggeblieben ist, berücksichtigen muss.
Vielleicht so:
Delphi-Quellcode:
procedure TForm1.Image_verteilen (const Anzahl: Byte; Image: TImage);
var
Abstand : Integer;
Rand : Integer;
Hoehe : Integer;
i : Byte;
begin
Canvas.Fillrect (ClientRect);
Abstand := ClientWidth div Anzahl;
Rand := ((Abstand - Image.Picture.Graphic.Width) + (ClientWidth mod Anzahl)) div 2;
Hoehe := (ClientHeight - Image.Picture.Graphic.Height) div 2;
for i := 0 to Anzahl - 1 do
begin
Canvas.Draw(Rand + i * Abstand, Hoehe, Image.Picture.Graphic);
end;
end;
Edit1: Heigth war natürlich falsch, heißt Height.
Edit2: So sollte es nach meinen Test richtig sein.
Edit3: Da fehlten ein paar Worte.
Edit4: Wenn man schon die Image.Picture.Graphic zeichnet, sollte man auch deren größe zur Berechnung verwenden.