【问题标题】:Load resources (Images) on more projects在更多项目上加载资源(图像)
【发布时间】:2016-10-16 12:37:29
【问题描述】:

我有一个组件。在组件中,我需要加载动态的 TImageList。

我今天使用这种方式,但在我所有的项目中,我需要一次添加所有图像。

function NavigatorImages: TImageList;
var
   vIcon: TBitmap;
   I: Integer;
begin
   if FNavigatorImages = nil then
   begin
      vIcon := TBitmap.Create;
      try
         FNavigatorImages := TImageList.Create (nil);
         FNavigatorImages.Height := 16;
         FNavigatorImages.Width := 16;
         for I := 0 to 11 do
         begin
            vIcon.LoadFromResourceName (HInstance, 'IMAGE_' + IntToStr(I));
            FNavigatorImages.AddMasked (vIcon, vIcon.Canvas.Pixels[0,        FNavigatorImages.Height - 1]);
         end;
      finally
         vIcon.Free;
      end;
   end;
   Result := FNavigatorImages;
end;

如何创建单个资源文件,例如包含多个图像可以加载到组件中而无需在每个项目中添加资源。你有办法吗?

【问题讨论】:

    标签: delphi resources components timagelist


    【解决方案1】:

    你必须将它添加到你想使用它的每个项目中,但有一些方法可以让任务变得更容易。

    1. 使用.rc 文件和brcc 工具创建.res 文件:

      brcc32 -fo output.res input.rc
      
    2. 将相同的 .res 文件添加到您想要使用这些图像的每个项目(项目 >> 添加到项目或只需编辑 .dpr 以添加 {R 'path/filename.res'}。如果您对所有这些都有一个共同的单位项目(如果您谈论的组件是自定义组件就是这种情况),您还可以将.res 文件添加到该单元,资源将被加载到所有项目中。

    示例.rc 文件:

    IMAGE_1 BITMAP Path\Image1.bmp
    

    第二个参数是Resource-Definition Statement

    当然,如果这些图像中的任何一个发生变化,您必须手动重新编译 .rc 文件。

    【讨论】:

    • 将资源编译并添加到项目后,TImageList 有几种加载资源的方法 - GetResource()GetInstRes()ResourceLoad()ResInstLoad()。跨度>
    猜你喜欢
    • 2010-11-14
    • 2019-09-15
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多