Inno Setup - как центрировать анимированный gif в мастере изменения размера
Я хотел бы центрировать свой анимированный 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?
Ответы
Либо создайте изображение только после WizardSizePercentприменения. Так, например, в CurPageChanged, а не в InitializeWizard.
Или, лучше, иметь более надежное решение, которое работает, например, даже с WizardResizableответом WizardForm.OnResize, обновляя координаты изображения (или, скорее, Panelкоординаты - хотя я не понимаю его цели). Для примера см. Установка ширины элемента управления равной половине настраиваемой страницы. SurfaceWidth работает неправильно в Inno Setup .
Также обратите внимание, что вы не можете использовать постоянные координаты. Ваше изображение не будет правильно центрироваться на дисплеях с высоким разрешением. Либо масштабируйте координаты - для этого проверьте, например, Inno Setup Размещение изображения / элемента управления на настраиваемой странице . Или в вашем случае было бы лучше, если бы вы вычисляли центрированные координаты программно на основе изображения и размеров окна - для этого проверьте In Inno Setup, как мне центрировать некоторый текст в окне?