需要将具有透明部分的一些HQ PNG图像转换为可用的位图

时间:2013-12-10 10:55:36

标签: bitmap devexpress png transparency delphi-7

我正在使用一个名为DevExpress for Delphi 7的扩展程序。它具有Windows 7样式的功能区控件。控件在各个列表中存储大图像和小图像。

到目前为止,我们的软件已经在exe本身填充了这些列表。现在,为了减小尺寸,我们试图通过代码填充它们。这很棘手,因为:

  1. 列表只接受位图。
  2. 我相信透明度会失去 转换为Bitmaps。
  3. 以下是我一直试图使用的代码:

    成功添加我们的图片,但在其周围留下白色而不是透明

    OR

    根本不添加任何图像。

    begin
      FindAllFiles(RbnImgPath + 'v' + IntToStr(vNo) + '\' + RbnImgFolder+'\*.bmp', faAnyFile, RbnImgList);
      for i:=0 to RbnImgList.count-1 do
      begin
       if FileExists(RbnImgPath + 'v' + IntToStr(vNo) + '\' + RbnImgFolder+'\' + IntToStr(i)+'.bmp') then
       begin
        //NEED TO CATCH BAD FILES THAT COULDN'T BE READ.
        CurrentPNG.LoadFromFile(RbnImgPath + 'v' + IntToStr(vNo) + '\' + RbnImgFolder+'\' + IntToStr(i)+'.png');
        //bitmap.LoadFromFile(RbnImgPath + 'v' + IntToStr(vNo) + '\' + RbnImgFolder+'\' + IntToStr(i)+'.bmp');
        bitmap.Assign(CurrentPNG);
        //ImageList.Add(Convert_PNG_To_bitmap(CurrentPNG), nil);
        ImageList.Add(bitmap, nil);
       end;
       //else //Fill any left with placeholders.
        //ImageList.Add(PlcHolderBmp, nil);
      end;
      bitmap.free;
      //CurrentPNG.free;
      PlcHolderBmp.free;
    end;
    

    如您所见,我一直在尝试将图像添加为位图和PNG。最后,它们总是需要转换为位图才能被添加到列表中。

0 个答案:

没有答案