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

时间:2011-11-27 16:15:42

标签: inno-setup

我想在欢迎页面上显示它。

这怎么可能?

3 个答案:

答案 0 :(得分:5)

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

  

WizardImageFile和WizardSmallImageFile [Setup] section指令现在支持带有alpha通道的32位位图文件。使用新的WizardImageAlphaFormat [Setup] section指令指定位图文件是否具有与alpha通道值预乘的红色,绿色和蓝色通道值。由Honza Rameš通过GitHub提供。

  

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

http://www.jrsoftware.org/files/is5-whatsnew.htm

答案 1 :(得分:4)

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

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

  • 将png转换为bmp(这将删除Alpha通道)
  • 使用图像其余部分未出现的颜色替换应该透明的图像部分(例如洋红色:#FF00FF
  • 在国际空间站中包含图像:

    [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透明度那么漂亮,但对于简单的情况应该没问题。

答案 2 :(得分:3)

根据http://news.jrsoftware.org/news/innosetup.code/msg23217.html上的新闻组发布,安装表单不支持PNG,欢迎页面也不支持PNG。