Inno Setup-크기 조정 된 마법사에서 애니메이션 GIF를 중앙에 배치하는 방법

Aug 20 2020

WizardSizePercent=150값을 사용하지 않고 내 설치 프로그램 ( ) 의 모든 페이지 중간에 내 애니메이션 GIF를 중앙에 배치하고 싶습니다 .

내 코드는 다음과 같습니다.

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응답합니다 . 예제 는 Inno Setup에서 컨트롤 너비를 사용자 정의 페이지 SurfaceWidth의 절반으로 설정하면 올바르게 작동하지 않음을 참조하십시오 .WizardForm.OnResizePanel


또한 상수 좌표를 사용할 수 없습니다. 이미지가 높은 DPI 디스플레이에서 올바르게 중앙에 있지 않습니다. 좌표를 조정하십시오. 예를 들어 Inno Setup 사용자 정의 페이지에 이미지 / 컨트롤 배치 . 또는 귀하의 경우에는 이미지와 창 크기를 기반으로 프로그래밍 방식으로 중심 좌표를 계산하는 것이 더 좋을 것입니다 . Inno Setup을 확인하십시오 . 어떻게 텍스트를 창 중앙에 배치합니까?