在 Inno Setup 的自定义页面上显示控件背后的背景

Show background behind controls on custom page of Inno Setup

我已经创建了一个安装程序,我正在尝试为背景设置一个图像。但是在安装页面的文本和进度条控件后面没有显示背景,这是它的样子:

这是我用来设置背景的代码:

ExtractTemporaryFile('white.bmp');

InstallTypePage := CreateInputOptionPage(wpSelectDir,
  '', '',
  'Si eliges la instalación de tipo "Servidor" se creará una base de datos en blanco.',
  True, False);
{add white background}
BackImageW := TBitmapImage.Create(WizardForm);
BackImageW.Bitmap.LoadFromFile(ExpandConstant('{tmp}\white.bmp'));
BackImageW.Top := 0;
BackImageW.Left := 0; 
BackImageW.Parent := InstallTypePage.Surface;
BackImageW.Align := alCLient; 
BackImageW.Stretch := False;

{create radio buttons on page}
InstallTypePageID := InstallTypePage.ID;
InstallTypePage.Add('Servidor');
InstallTypePage.Add('Terminal');
InstallTypePage.Add('Restablecer');

BackImageW := TBitmapImage.Create(WizardForm);
BackImageW.Bitmap.LoadFromFile(ExpandConstant('{tmp}\white.bmp'));
BackImageW.Top := 0;
BackImageW.Left := 0;
BackImageW.Parent := WizardForm.InstallingPage;
BackImageW.Align := alCLient;
BackImageW.Stretch := False;
WizardForm.ProgressGauge.Top := WizardForm.InstallingPage.Height - ScaleY(40);
WizardForm.ProgressGauge.Height := ScaleY(8);

TNewStaticText 不支持透明度。您可以通过将其替换为 TLabel 来解决该问题。参见

但是你的问题不仅是TNewStaticText,还有TNewCheckListBox和其他控件。而且 TNewCheckListBox 根本不支持透明度。请参阅 Transparent components list background in Inno Setup? 您所能做的就是将其背景设置为白色。如果您决定依赖这种方法,您可以对 TNewStaticText 和所有其他控件执行相同的操作。

InstallTypePage.SubCaptionLabel.Color := clWhite;
InstallTypePage.CheckListBox.Color := clWhite;


但是您不能更改 TNewProgressBar 的颜色。您将不得不绘制自定义进度条。参见


有支持主题的 Inno Setup 克隆。这些可能支持这些控件的透明度。