我试图在运行时分配图像(
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;
我不知道底层是否会工作,猜测不行.只是我试过的东西
解决方法
我刚刚添加了一个名为SampleBitmap(位图图像)的资源到一个新的VCL项目.然后我添加了一个TImage控件,并给它一个OnClick处理程序:
procedure TForm1.Image1Click(Sender: TObject); begin Image1.Picture.Bitmap.LoadFromResourceName(HInstance,'SampleBitmap'); end;
它工作完美.
更新
问题很可能是您使用的是JPG图像,而不是位图.您不能将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;