在 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 克隆。这些可能支持这些控件的透明度。
我已经创建了一个安装程序,我正在尝试为背景设置一个图像。但是在安装页面的文本和进度条控件后面没有显示背景,这是它的样子:
这是我用来设置背景的代码:
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 克隆。这些可能支持这些控件的透明度。