Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#3

Re: TImage zeichnen aber wo und wie oft?

  Alt 15. Apr 2006, 07:20
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat