You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup中如何在InputOptionPage单选按钮旁/下方放置图片?

Inno Setup:给画质选项单选按钮添加预览图片

核心思路

TInputOptionWizardPage的选项本质是TRadioButton控件,嵌套在页面的CheckListBox容器里。你可以通过索引直接获取对应选项的单选按钮,再根据它的位置定位预览图片。

完整实现代码

首先在代码段开头声明所需变量:

[Code]
var
  GraphicsSettingsPage: TInputOptionWizardPage;
  LowSettingsPic, HighSettingsPic: TBitmapImage;

修改InitializeWizard过程,完成页面创建、图片加载与布局:

procedure InitializeWizard;
var
  LowRadio, HighRadio: TRadioButton;
  PicWidth, PicHeight: Integer;
begin
  // 创建画质设置页面
  GraphicsSettingsPage := 
    CreateInputOptionPage(
      PlayerBasicsWizardPage.ID,
      '画质设置',
      '选择适合您设备的画质配置',
      '低配置适配性能较弱设备,高配置提供最佳视觉效果',
      True,
      False);
        
  // 添加选项
  GraphicsSettingsPage.Add('低画质');
  GraphicsSettingsPage.Add('高画质');

  // 获取对应单选按钮控件
  LowRadio := TRadioButton(GraphicsSettingsPage.CheckListBox.Items.Objects[0]);
  HighRadio := TRadioButton(GraphicsSettingsPage.CheckListBox.Items.Objects[1]);

  // 设置图片尺寸(根据实际图片调整)
  PicWidth := 200;
  PicHeight := 150;

  // 加载低画质预览图
  LowSettingsPic := TBitmapImage.Create(GraphicsSettingsPage);
  LowSettingsPic.Parent := GraphicsSettingsPage.Surface;
  LowSettingsPic.Bitmap.LoadFromFile(ExpandConstant('{tmp}\low_settings.bmp'));
  LowSettingsPic.Width := PicWidth;
  LowSettingsPic.Height := PicHeight;
  // 图片放在低画质单选按钮右侧,间距10像素
  LowSettingsPic.Left := LowRadio.Left + LowRadio.Width + 10;
  LowSettingsPic.Top := LowRadio.Top;

  // 加载高画质预览图
  HighSettingsPic := TBitmapImage.Create(GraphicsSettingsPage);
  HighSettingsPic.Parent := GraphicsSettingsPage.Surface;
  HighSettingsPic.Bitmap.LoadFromFile(ExpandConstant('{tmp}\high_settings.bmp'));
  HighSettingsPic.Width := PicWidth;
  HighSettingsPic.Height := PicHeight;
  // 图片放在高画质单选按钮右侧,间距10像素
  HighSettingsPic.Left := HighRadio.Left + HighRadio.Width + 10;
  HighSettingsPic.Top := HighRadio.Top;
end;

关键细节说明

  • 获取单选按钮:GraphicsSettingsPage.CheckListBox.Items.Objects[Index]返回对应索引的控件对象,强制转换为TRadioButton即可操作,索引从0开始,对应添加选项的顺序。
  • 图片布局:必须将Parent设置为GraphicsSettingsPage.Surface,否则图片无法显示在页面上;通过Left和Top属性与单选按钮对齐。
  • 可选优化:若只想显示当前选中项的图片,可添加单选按钮点击事件切换可见性:
procedure RadioButtonClick(Sender: TObject);
begin
  LowSettingsPic.Visible := (Sender = LowRadio);
  HighSettingsPic.Visible := (Sender = HighRadio);
end;

// 在InitializeWizard中绑定事件
LowRadio.OnClick := @RadioButtonClick;
HighRadio.OnClick := @RadioButtonClick;
// 初始化时显示默认选中项的图片
if GraphicsSettingsPage.SelectedIndex = 0 then
  HighSettingsPic.Visible := False
else
  LowSettingsPic.Visible := False;

注意事项

  • 确保{tmp}目录存在对应BMP图片,可在[Files]段提前解压:
[Files]
Source: "path\to\low_settings.bmp"; DestDir: "{tmp}"; Flags: dontcopy
Source: "path\to\high_settings.bmp"; DestDir: "{tmp}"; Flags: dontcopy
  • 优先使用BMP格式图片,Inno Setup的TBitmapImage对其支持最好。

内容的提问来源于stack exchange,提问作者jmarkman446

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 08:43:15