我试图在运行时分配图像(
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;