Inno setup Inno设置-如何显示透明PNG图像?

Inno setup Inno设置-如何显示透明PNG图像?,inno-setup,Inno Setup,我想在欢迎页面上展示它 这是怎么可能的?根据发布在的新闻组,PNG在安装表单上不受支持,在欢迎页面上也不受支持 但是,如果您的目的主要是显示部分透明的图像,则有一种解决方法: TBitmapImage类的ReplaceColor和ReplaceWithColor属性允许动态地将图像中的一种颜色替换为另一种颜色。诀窍是用wizzard的背景色替换“虚拟”颜色(如洋红): 将png转换为bmp(这将删除alpha通道) 将图像中应为透明的部分替换为图像其余部分中不会出现的颜色(例如洋红:#FF0

我想在欢迎页面上展示它


这是怎么可能的?

根据发布在的新闻组,PNG在安装表单上不受支持,在欢迎页面上也不受支持

但是,如果您的目的主要是显示部分透明的图像,则有一种解决方法:

TBitmapImage
类的
ReplaceColor
ReplaceWithColor
属性允许动态地将图像中的一种颜色替换为另一种颜色。诀窍是用wizzard的背景色替换“虚拟”颜色(如洋红):

  • 将png转换为bmp(这将删除alpha通道)
  • 将图像中应为透明的部分替换为图像其余部分中不会出现的颜色(例如洋红:
    #FF00FF
  • 将图像包括在您的ISS中:

    [Files]
    Source: "my\transparent\image.bmp"; DestDir: "{tmp}"; Flags: dontcopy
    
  • 将图像添加到wizzard页面:

    [Code]
    
    procedure InitializeWizard;
    var
        ImageFile: String;
        Image: TBitmapImage;
    begin
        ImageFile := ExpandConstant('{tmp}\image.bmp');
        ExtractTemporaryFile('image.bmp');
        Image := TBitmapImage.Create(WizardForm);
        with Image do
        begin
            Bitmap.LoadFromFile(ImageFile);
            Parent := WizardForm.WelcomePage;
            Left := 10;
            Top := 10;
            Width := 30;
            Height := 30;
            ReplaceColor := $00FF00FF;                        // Replace magenta...
            ReplaceWithColor := WizardForm.WelcomePage.Color; // ...with the background color of the page
        end;
    end;
    
它没有真正的alpha透明度那么漂亮,但对于简单的情况应该可以。

在5.5.7更新(2015年12月28日)中,有32位BMP实现了alpha通道功能

WizardImageFile和WizardSmallImageFile
[Setup]
部分指令现在支持带有alpha通道的32位位图文件。使用新的
向导ImageAlphaFormat
[Setup]
部分指令指定位图文件的红色、绿色和蓝色通道值是否与alpha通道值预乘。由via提供

Pascal脚本更改:
Class
TBitmapImage
现在支持带有alpha通道的32位位图文件。在加载位图文件之前,请确保设置
Bitmap.AlphaFormat
属性


正确,仅支持位图文件。不再支持有效答案。看。