![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по JPEG из DLL
kas86 © (2007-10-28 11:57:00)Вот например Bitmap file выташить из dll можно вот так
var
AModule: THandle;
begin
AModule := LoadLibrary('graphics.dll');
image1.Picture.BitMap.LoadFromResourceName(AModule, 'police');
FreeLibrary(AModule);
Вопрос: А КАК ВЫТАЩИТЬ из тойже dll JPEG картинку??????
MetalFan (2007-10-30 13:39:00) [1]
> Ура разобрался самостоятельно!
так тебе же сказали в [1]
kas86 (2007-10-28 17:54:00) [2]ЕЩЁ ОДИН МОМЕНТ
Если в файле graphics.rc мы пишем kartinka JPGkartinka.jpg то и вдальнейшем
когда пишем программный код надо писать
RS:=TResourceStream.Create(AModule, 'kartinka', 'JPG'); а не JPEG, но у меня и так всё работало, главное чтоб в USES было прописано JPEG
antonn (2007-10-28 17:16:00) [3]ага, как раз в битмап jpg грузить...
Dimaxx (2007-10-28 17:04:00) [4]Насколько я представляю, должно быть так:
Image1.Picture.Bitmap.Assign(JPG.Bitmap);
homm (2007-10-28 16:22:00) [5]> Image1.Picture:=nil;
> Image1.Picture.Assign(JPG);
Ты уверен, что ЭТО работает?
kas86 (2007-10-28 16:19:00) [6]Ура разобрался самостоятельно! Перелопатив кучу форумов и исходников, на которых ничего не работает, втретил такую же кучу людей с такой же проблемой. Так вот : КАК СОЗДАТЬ DLL-БИБЛИОТЕКУ И ИЗВЛЕЧЬ ИЗ НЕЁ JPEG НЕ РАСПАКОВЫВЫЯ НА ДИСК. (админ, можете добавить в faq)
1. Создаём файл graphics.rc
2. Пишем туда kartinka JPG kartinka.jpg (jpg и rc файлы в одном каталоге)
3. запускаем borland\delphi7\bin\brcc32.exe с параметром graphics.rc
4. Получив graphics.res в делфи создаем DLL Wizard
5. Дописываем после USES, строчку {$R graphics.res} и компилируем.
6. Получив graphics.dll кладем его в папку с разрабатываемой программой и пишем код куда вам надо:
var
RS: TResourceStream;
JPG: TJPEGImage;
AModule: THandle;
begin
AModule:=LoadLibrary('graphics.dll');
RS:=TResourceStream.Create(AModule, 'kartinka', 'JPEG');
JPG:=TJPEGImage.Create;
JPG.LoadFromStream(RS);
Image1.Picture:=nil;
Image1.Picture.Assign(JPG);
JPG.Free;
RS.Free;
Остаётся только расставить как вам надо try except. С битмапами проще - код расписан выше. Теоретически можно в длл зашить и мета файлы и т.д.
Спасибо MBo за то что указал на правильный путь.
kas86 (2007-10-28 12:50:00) [7]Хорошо, теоретически выглядить должно вроде как так?????
JPG: TJEPEGImage;
RS: TSesourceStream;
begin
JPG:=JPG.Create;
RS:=TResourceStream.Create(hInstance, PChar(copy('graphics.dll', 1, Pos('.', 'graphics.dll')-1)), 'poljpg'); -- вот тута у меня проблема, не могу додумать программа выдает Reource graphics not found
JpG.LoadFromStreaam(RS);
Image.Picture.Assign.(JPG);
где poljpg - сама картинка Жпег вшитая в длл
Помогите дописать правильно
MBo (2007-10-28 12:02:00) [8]TJpegImage.LoadFromStreaam + TResourceStream