从资源加载位图

Fay*_*yaz 1 delphi firemonkey

我找到了一个解决方案,用于从资源文件加载位图如何在FireMonkey中存储图像?我试图在我的Firemonkey应用程序中使用它,但它找不到资源并引发错误"EresNotFound".我的资源.RC文件是这样的

Bitmap_1    BITMAP    "Test.bmp"
Run Code Online (Sandbox Code Playgroud)

我的守则是

procedure Tform1.load_image_from_resource(var Im1: Timage; res_name: String);
var InStream: TResourceStream;
begin
  InStream := TResourceStream.Create(HInstance, res_name,RC_RTDATA);
  try
    Im1.Picture.Bitmap.LoadFromStream(InStream);
  finally
    InStream.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Load_image_from_resource(Image1,'Bitmap_1');
end;
Run Code Online (Sandbox Code Playgroud)

我还在Delphi 2010问题上找到了解决方案:无法找到资源 - EResNotFound.但它仍然没有找到资源

Eug*_*neK 8

您的代码中存在几个问题,您需要将资源声明为RCDATA

Bitmap_1    RCDATA    "Test.bmp"
Run Code Online (Sandbox Code Playgroud)

也看起来你创建了VCL应用程序,资源类型名称中有一个拼写错误,它应该是RT_RCDATA,工作FireMonkey代码看起来像这样

procedure Tform1.load_image_from_resource(var Im1: Timage; res_name: String);
var InStream: TResourceStream;
begin
  InStream := TResourceStream.Create(HInstance, res_name, RT_RCDATA);
  try
    Im1.Bitmap.LoadFromStream(InStream);
  finally
    InStream.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Load_image_from_resource(Image1, 'Bitmap_1');
end;
Run Code Online (Sandbox Code Playgroud)