Загрузка изображения из встроенного ресурса
Я пытаюсь присвоить изображение (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;
Я понятия не имею, будет ли нижний работать вообще, не думаю. Просто я попробовал.
![Resource and Image]()
Ответы
Ответ 1
Я просто добавил ресурс с именем 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;
Ответ 2
Загрузите его непосредственно в 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;