从嵌入式资源加载图像

前端之家收集整理的这篇文章主要介绍了从嵌入式资源加载图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在运行时分配图像( Image1)一张图片.

因为我无法设置从资源加载的属性.所以我需要在运行时加载.

我有代码

  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var RS:Tresourcestream ;
  3. begin
  4. RS := TResourceStream.Create(HInstance,'Splashscreen_Background',RT_RCDATA);
  5. image1.Picture.Bitmap.LoadFromResourcename(HInstance,'splashscreen_background');
  6. end;

但它只是加载一个空白图像的表单.以及:

  1. procedure TForm1.FormCreate(Sender: TObject);
  2. BitMap1 : TBitMap;
  3. begin
  4. BitMap1 := TBitMap.Create;
  5. BitMap1.LoadFromResourceName(HInstance,'Live');
  6. image1.Picture.Bitmap.Assign(Bitmap1);
  7. end;

我不知道底层是否会工作,猜测不行.只是我试过的东西

解决方法

我刚刚添加了一个名为SampleBitmap(位图图像​​)的资源到一个新的VCL项目.然后我添加了一个TImage控件,并给它一个OnClick处理程序:
  1. procedure TForm1.Image1Click(Sender: TObject);
  2. begin
  3. Image1.Picture.Bitmap.LoadFromResourceName(HInstance,'SampleBitmap');
  4. end;

它工作完美.

更新

问题很可能是您使用的是JPG图像,而不是位图.您不能将JPG图像加载到TBitmap中.那么该怎么办?那么,添加JPEG到你的uses子句,并做

  1. procedure TForm5.Image1Click(Sender: TObject);
  2. var
  3. RS: TResourceStream;
  4. JPGImage: TJPEGImage;
  5. begin
  6. JPGImage := TJPEGImage.Create;
  7. try
  8. RS := TResourceStream.Create(hInstance,'JpgImage',RT_RCDATA);
  9. try
  10. JPGImage.LoadFromStream(RS);
  11. Image1.Picture.Graphic := JPGImage;
  12. finally
  13. RS.Free;
  14. end;
  15. finally
  16. JPGImage.Free;
  17. end;
  18. end;

猜你在找的Delphi相关文章