我正在尝试在运行时为图像(Image1)分配图像。
因为我无法设置要从资源加载的属性。所以我需要在运行时加载。
我有代码
procedure TForm1.FormCreate(Sender: TObject);
var RS:Tresourcestream ;
begin
RS := TResourceStream.Create(HInstance,'Splashscreen_Background', RT_RCDATA);
image1.Picture.Bitmap.LoadFromResourcename(HInstance,'splashscreen_background');
end;
但它只是加载带有空白图像的表单。以及:
procedure TForm1.FormCreate(Sender: TObject);
BitMap1 : TBitMap;
begin
BitMap1 := TBitMap.Create;
BitMap1.LoadFromResourceName(HInstance,'Live');
image1.Picture.Bitmap.Assign(Bitmap1);
end;
我不知道底部是否会起作用,猜不是。只是我尝试过的东西。
答案 0 :(得分:25)
我刚刚将一个名为SampleBitmap
的资源(位图图像)添加到新的VCL项目中。然后我添加了一个TImage
控件,并给它一个OnClick
处理程序:
procedure TForm1.Image1Click(Sender: TObject);
begin
Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'SampleBitmap');
end;
效果很好。
<强>更新强>
问题很可能是您使用的是JPG图像,而不是Bitmap。您无法将JPG图像加载到TBitmap
。那么该怎么办?好吧,将JPEG
添加到您的uses
子句中,然后执行
procedure TForm5.Image1Click(Sender: TObject);
var
RS: TResourceStream;
JPGImage: TJPEGImage;
begin
JPGImage := TJPEGImage.Create;
try
RS := TResourceStream.Create(hInstance, 'JpgImage', RT_RCDATA);
try
JPGImage.LoadFromStream(RS);
Image1.Picture.Graphic := JPGImage;
finally
RS.Free;
end;
finally
JPGImage.Free;
end;
end;
答案 1 :(得分:3)
将其直接加载到TBitmap
,就像您尝试过的那样:
// Create your resource like this:
// MyResource.rc
SPLASHBKGND BITMAP YourSplashscreen.bmp
编译:
C:\YourResFolder\Brcc32 MyResource.rc MyResource.res
或在Delphi的更高版本中:
{$R MyResource.res MyResource.rc}
使用它:
procedure TForm1.FormCreate(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.LoadFromResourceName(HInstance, 'SPLASHBKGND');
Image1.Picture.Assign(Bmp);
finally
Bmp.Free;
end;
end;