Inno Setup: cómo centrar un gif animado en el asistente redimensionado

Aug 20 2020

Me gustaría centrar mi gif animado justo en el medio de todas las páginas de mi instalador ( WizardSizePercent=150) sin usar valores.

Aquí está mi código:

var
  ParentForm: TSetupForm;

begin
  TimerID := 0;
  SlideID := 0;
  ContentHeight := ParentForm.Top + ParentForm.Height;
  ExtractTemporaryFile('Image1.bmp');
  ExtractTemporaryFile('Image2.bmp');
  ExtractTemporaryFile('Image3.bmp');
  ExtractTemporaryFile('Image4.bmp');
  ExtractTemporaryFile('Image5.bmp');
  ExtractTemporaryFile('Image6.bmp');


  Panel := TPanel.Create(ParentForm);
  Panel.Parent := ParentForm;
  Panel.Left := 185;
  Panel.Top := ParentForm.Top + 130;
  Panel.Width := 1000;
  Panel.Height := 380;
  Panel.Visible := True;

  BackImage := TBitmapImage.Create(ParentForm);
  BackImage.Parent := Panel;
  BackImage.Width:= 1000;
  BackImage.Height:= 380;
  BackImage.Left := (Panel.Height - BackImage.Height) div 2;
  BackImage.Top := (Panel.Height - BackImage.Height) div 2;
  BackImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image1.bmp'));
  StartSlideTimer;
end;

¿Cómo tengo que cambiar los valores de ContentHeight, Panely BackImage?

Respuestas

2 MartinPrikryl Aug 20 2020 at 17:39

Cree la imagen solo después de WizardSizePercentaplicar el. Por ejemplo, en el CurPageChanged, no en InitializeWizard.

O mejor, tener una solución más robusta, que funcione, por ejemplo, incluso con WizardResizable, responda WizardForm.OnResizeactualizando las coordenadas de la imagen (o más bien las Panelcoordenadas, aunque no entiendo su propósito). Por ejemplo, consulte Establecer el ancho de control a la mitad de la página personalizada SurfaceWidth no funciona correctamente en Inno Setup .


También tenga en cuenta que no puede utilizar coordenadas constantes. Su imagen no se centraría correctamente en pantallas de alta DPI. Escale las coordenadas; para eso, verifique, por ejemplo, Inno Setup Colocando imagen / control en una página personalizada . O en su caso, sería mejor, si calcula las coordenadas centradas programáticamente en función de los tamaños de la imagen y la ventana; para eso, consulte In Inno Setup, ¿cómo centro un poco de texto en la ventana?