Delphi 如何添加和使用资源

Delphi 如何添加和使用资源,delphi,resources,Delphi,Resources,在我的应用程序中,我想添加2个图像作为资源 我想使用这些图像,当我在应用程序中单击“是”按钮时,第一个图像将设置为壁纸,当我在应用程序中单击“否”按钮时,第二个图像将设置为桌面壁纸 提前谢谢 关于最简单的方法是创建一个文本文件,并将其命名为resources.rc或其他名称(只要它与项目文件的名称不同,因为它已经有自己的资源文件) 如果要添加图像,则需要添加以下行: IMG_1 BITMAP "c:\my files\image1.bmp" IMG_2 RCDATA "c:\my files\i

在我的应用程序中,我想添加2个图像作为资源

我想使用这些图像,当我在应用程序中单击“是”按钮时,第一个图像将设置为壁纸,当我在应用程序中单击“否”按钮时,第二个图像将设置为桌面壁纸

提前谢谢


关于

最简单的方法是创建一个文本文件,并将其命名为resources.rc或其他名称(只要它与项目文件的名称不同,因为它已经有自己的资源文件)

如果要添加图像,则需要添加以下行:

IMG_1 BITMAP "c:\my files\image1.bmp"
IMG_2 RCDATA "c:\my files\image2.jpg"
请注意,第一个参数是唯一的标识资源名称。 第二个参数是资源类型。有些常量可用,如位图和AVI。对于其他人,使用RCDATA。 第三个参数是资源的完整路径和文件名

现在,在Delphi中,您可以在项目管理器中将这个.rc文件添加到您的项目中

要使用这些资源,您需要根据资源类型使用不同的方法

要加载位图,可以使用:

imgWallpaper1.Picture.Bitmap.LoadFromResourceName(HInstance,'IMG_1')

要加载JPEG,您需要按如下方式进行转换:

var
   jpgLogo: TJpegImage;
   RStream: TResourceStream;
begin
     RStream := TResourceStream.Create(HInstance, 'IMG_2', RT_RCDATA);
     Try
        jpgLogo := TJpegImage.Create;
        Try
           jpgLogo.LoadFromStream(RStream);
           imgLogo.Picture.Graphic := jpgLogo;
        Finally
           jpgLogo.Free;
        End;
     Finally
        RStream.Free;
     End; {Try..Finally}

res文件的内容包含在exe文件中,如何避免这种情况?@grinner,这就是资源文件的全部要点,将它们添加到可执行文件中,这样您就不必分发额外的文件了。@J_uuu好的,但我不喜欢fat exe文件,所以另一点是从exe中分离静态数据,并仅在需要时加载它们。最后,我使用DLL实现了这个目的。