Ich möchte ein Bild zentriert auf die Maximal verfügbare Fläche eines Panels Skalieren unter Einbeihalt vorgegebener Seiten Verhältnisse.
Hier mein Ansatz:
Code: Alles auswählen
procedure SetImage(Aspect1, Aspect2: Integer);
var
Width, Height: Integer;
begin
Width := Form1.Panel1.Height div Aspect2 * Aspect1;
Height := Form1.Panel1.Width div Aspect1 * Aspect2;
Form1.Panel2.Width := Width;
Form1.Panel2.Height := Height;
Form1.Panel2.Left := (Form1.Panel1.Width - Form1.Panel2.Width) div 2;
Form1.Panel2.Top := (Form1.Panel1.Height - Form1.Panel2.Height) div 2;
end;
procedure TForm1.Panel1Resize(Sender: TObject);
begin
SetImage(4, 3);
end;
Sieht eigentlich gut aus.
Nur wenn ich ein Image darauf setze das alClient hat dann sieht man das beim Resize teile des Bildes in den nicht sichtbaren Bereich verloren gehen. (Das Bild ist ein mPlayer und skaliert das Bild natürlich auf die Größe)
Hat wer ne Idee was an meiner Rechnung falsch ist?