Die Fehler treten nur auf wenn form.scale.x und y ungleich 1 ist.
Ich skaliere wie folgt:
Delphi-Quellcode:
procedure TfrmMain.FormResize(Sender: TObject);
var
scaleX, scaleY, scaleFaktor: double;
begin
if (frmMain.Height > 712) and (frmMain.Width > 1024) then
begin
//Für eine gleichmäßige Skallierung den kleineren Wert ermitteln
scaleX := frmMain.ClientWidth/1024;
scaleY := frmMain.ClientHeight/712;
scaleFaktor := max(min(scaleX, scaleY),1);
frmMain.laMain.Scale.X := scaleFaktor;
frmMain.laMain.Scale.Y := scaleFaktor;
end
else
begin
scaleX := frmMain.ClientWidth/1024;
scaleY := frmMain.ClientHeight/712;
scaleFaktor := max(min(scaleX, scaleY),0.6);
frmMain.laMain.Scale.X := scaleFaktor;
frmMain.laMain.Scale.Y := scaleFaktor;
end;
end;
Anbei eine Testanwendung. Wäre nett wenn jemand kurz testen könnte ob der Fehler bei ihm auch auftritt.