Inno Setup - как центрировать анимированный gif в мастере изменения размера

Aug 20 2020

Я хотел бы центрировать свой анимированный gif прямо посередине всех страниц в моем установщике ( WizardSizePercent=150) без использования значений.

Вот мой код:

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;

Как мне изменить значения ContentHeight, Panelи BackImage?

Ответы

2 MartinPrikryl Aug 20 2020 at 17:39

Либо создайте изображение только после WizardSizePercentприменения. Так, например, в CurPageChanged, а не в InitializeWizard.

Или, лучше, иметь более надежное решение, которое работает, например, даже с WizardResizableответом WizardForm.OnResize, обновляя координаты изображения (или, скорее, Panelкоординаты - хотя я не понимаю его цели). Для примера см. Установка ширины элемента управления равной половине настраиваемой страницы. SurfaceWidth работает неправильно в Inno Setup .


Также обратите внимание, что вы не можете использовать постоянные координаты. Ваше изображение не будет правильно центрироваться на дисплеях с высоким разрешением. Либо масштабируйте координаты - для этого проверьте, например, Inno Setup Размещение изображения / элемента управления на настраиваемой странице . Или в вашем случае было бы лучше, если бы вы вычисляли центрированные координаты программно на основе изображения и размеров окна - для этого проверьте In Inno Setup, как мне центрировать некоторый текст в окне?