【问题标题】:Image covering whole page in Inno Setup在 Inno Setup 中覆盖整个页面的图像
【发布时间】:2017-06-10 09:58:31
【问题描述】:

接下来是:Inno Setup Placing image/control on custom page

这是我需要的:

CustomPage := CreateCustomPage(wpLicense, 'Heading', 'Sub heading.');

ExtractTemporaryFile('image.bmp');

BtnImage := TBitmapImage.Create(WizardForm);
with BtnImage do
begin
  Parent := CustomPage.Surface;
  Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\image.bmp');
  AutoSize := True;
  AutoSize := False;
  Height := ScaleX(Height);
  Width := ScaleY(Width);
  Stretch := True;
  Left := ScaleX(90);
  Top := WizardForm.SelectTasksPage.Top + WizardForm.SelectTasksPage.Height -
         Height - ScaleY(8);
  Cursor := crHand;
  OnClick := @ImageOnClick;
end;

但是,我希望背景图像是标题下方和页脚上方空间的完整大小,没有边距。我尝试了各种拉伸/边距/高度/宽度,但结果很混乱。无论 DPI 如何,实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: inno-setup pascalscript


    【解决方案1】:

    您可以使用TWizardPage.SurfaceHeight and TWizardPage.SurfaceWidth 检索(自定义)页面表面的大小。

    BtnImage.Height := CustomPage.SurfaceHeight;
    BtnImage.Width := CustomPage.SurfaceWidth;
    

    虽然您会看到(自定义)页面并未覆盖“页眉”(MainPanel)和“页脚”(带有按钮的底部)之间的整个区域。


    如果要在“页眉”和“页脚”之间的整个区域显示图像,则不能将其放置在(自定义)页面上。你必须把它放在InnerPage 上(什么是所有带有“header”的页面的父控件)。

    BtnImage.Parent := WizardForm.InnerPage;
    
    BtnImage.Left := 0;
    BtnImage.Top := WizardForm.Bevel1.Top + 1;
    BtnImage.Width := WizardForm.InnerPage.ClientWidth;
    BtnImage.Height := WizardForm.InnerPage.ClientHeight - BtnImage.Top;
    

    但是这样图像就不会在自定义页面显示/隐藏时自动显示/隐藏。您必须对其进行编码。使用CurPageChanged event function

    procedure CurPageChanged(CurPageID: Integer);
    begin
      WizardForm.InnerNoteBook.Visible := (CurPageID <> CustomPage.ID);
      BtnImage.Visible := (CurPageID = CustomPage.ID);
    end;
    


    类似问题:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      相关资源
      最近更新 更多