Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

DLL & PNG, GIF, JPG и т. п.   Найти похожие ветки 

 
TIF ©   (2007-06-29 18:47) [0]

Добрый вечер.

Наверное вопрос немного глуповат, но ответа на него пока не нашёл.

Итак, есть программа, форма, картинка (компонент TAdvOfficeImage и просто TImage). Туда необходимо из DLL загрузить изображение. С BMP всё легко и просто:

procedure TForm_Index.LoadImages();
//Загрузка рисунков интерфейса из 123.dll
var DLL: THandle;
begin

 DLL:=LoadLibrary("123.dll");

 Image.Picture.Bitmap.LoadFromResourceName(DLL, "Name");
 
 FreeLibrary(DLL);

end;

Хм, а как быть с PNG, например?


 
Германн ©   (2007-06-29 19:00) [1]

А при чём тут DLL?


 
Desdechado ©   (2007-06-29 19:03) [2]

Просто подключить соответствующие компоненты/классы, которые умеют обращаться с такими форматами графики. Для jpeg есть встроенный, для остальных - ищи в нете.


 
TIF ©   (2007-06-29 19:06) [3]


> А при чём тут DLL?


из неё нуно загрузить фото в этих форматах


> Просто подключить соответствующие компоненты/классы, которые
> умеют обращаться с такими форматами графики. Для jpeg есть
> встроенный, для остальных - ищи в нете.


В смысле компоненты? Вот есть у меня компонент TAdvOfficeImage, может загружать картинки в таких форматах, а как его направить на DLL?


 
DiamondShark ©   (2007-06-29 19:12) [4]


> Вот есть у меня компонент TAdvOfficeImage, может загружать
> картинки в таких форматах, а как его направить на DLL?

А, по-твоему, все должны знать, что такое TAdvOfficeImage?

Если у него есть есть методы, типа, LoadFromStream, можно создать TRecourceStream для ресурсов в твоих DLL и загружать из него.


 
TIF ©   (2007-06-29 19:19) [5]


> что такое TAdvOfficeImage?


так, понял ошибку, даю информацию

TMS Pack 4.2 - компонент оттуда.


> Если у него есть есть методы, типа, LoadFromStream, можно
> создать TRecourceStream для ресурсов в твоих DLL и загружать
> из него.


Есть вот что:

AdvOfficeImage1.Picture.LoadFromStream();

AdvOfficeImage1.Picture.LoadFromResourceName();

AdvOfficeImage1.Picture.LoadFromResourceID();


 
DiamondShark ©   (2007-06-29 19:23) [6]

Ну так и используй эти методы.


 
TIF ©   (2007-06-29 19:37) [7]

> Если у него есть есть методы, типа, LoadFromStream, можно
> создать TRecourceStream для ресурсов в твоих DLL

Никогда этого не делал. TRecourceStream создать наверное смогу, но дальше - полный финиш


 
DiamondShark ©   (2007-06-29 19:48) [8]

А не надо.
AdvOfficeImage1.Picture.LoadFromResourceName() или AdvOfficeImage1.Picture.LoadFromResourceID() должно хватить.

Кстати, если есть исходники, можно посмотреть чего у них унутре.
Ставлю 10 к 1, что там пара-тройка строчек с использованием TRecourceStream

;)


 
TIF ©   (2007-06-29 19:54) [9]


> Кстати, если есть исходники, можно посмотреть чего у них
> унутре.


есть


> Ставлю 10 к 1, что там пара-тройка строчек с использованием
> TRecourceStream


procedure TGDIPPicture.LoadFromResourceName(Instance: THandle; const ResName: string);
var
 Stream: TCustomMemoryStream;
begin
 if FindResource(Instance,PChar(ResName),RT_RCDATA) <> 0 then
 begin
   Stream := TResourceStream.Create(Instance, ResName, RT_RCDATA);
   try
     LoadFromStream(Stream);
   finally
     Stream.Free;
   end;
 end;
end;

Выиграл!


 
TIF ©   (2007-06-29 20:15) [10]

SOS!!!!!!!!!!!!!!!!!!

Прикол, но не идёт!

procedure TForm_Index.Button2Click(Sender: TObject);
var DLL: THandle;
begin

 DLL:=LoadLibrary("123.dll");

 AdvOfficeImage1.Picture.LoadFromResourceName(DLL, "Test");

 FreeLibrary(DLL);

end;

Ошибок нет, но и картинки нет! Картинка - PNG


 
TIF ©   (2007-06-29 20:35) [11]

Удалено модератором


 
Desdechado ©   (2007-06-29 21:31) [12]

Кто не идет и куда не идет?
Тебе же сказано, что для поддержки графформатов должны быть классы. Они есть в твоей библиотеке? Нет - ищи в других местах.


 
homm ©   (2007-06-29 23:20) [13]

> AdvOfficeImage1.Picture.LoadFromResourceName(DLL, "Test");

Это ты PNG в BMP секцию засунул, и ждешь что LoadFromResourceName правильно формат поймеет, или ты PNG засунул в секцию RCDATA и ждешь, что LoadFromResourceName сама надет рессурс, куда ты его запрятал?


 
homm ©   (2007-06-29 23:22) [14]

Хотя наверное второе. Вроде как в самом формате BMP секции содержатся сведения из заголовка BMP, потому засунуть туда что-то другое вроде нельзя.


 
homm ©   (2007-06-29 23:31) [15]

Используй LoadFromResourceID, ID находится с помошью FindResource


 
TIF ©   (2007-06-30 14:52) [16]

procedure TForm1.Button1Click(Sender: TObject);
var DLL: THandle;
begin

 DLL:=LoadLibrary("123.dll");

 AdvOfficeImage1.Picture.LoadFromResourceID(DLL, FindResource(DLL, "Test",  ???));

 FreeLibrary(DLL);

end;

Как я понял, вместо ??? нужно написать какой-то тип. Какой именно?


 
Правильный Вася   (2007-06-30 20:10) [17]


> нужно написать какой-то тип. Какой именно?

тот, который этому ресурсу назначен в длл


 
homm ©   (2007-06-30 23:18) [18]

> Как я понял, вместо ??? нужно написать какой-то тип. Какой
> именно?

Почитай справку по FindResource, помедитируй.


 
TIF ©   (2007-07-11 14:51) [19]


> тот, который этому ресурсу назначен в длл


Назначен PNG, я его и пишу - абсолютно ничего, ни ошибок, ни картинки...

Может кто сообразит, в чём тут дело?


 
Amoeba ©   (2007-07-11 16:02) [20]


> для остальных - ищи в нете.
>

GraphicEx, не содержит компонентов. Подключаешь одноименный модуль и в обычный TImage можно загружать еще кучу форматов помимо стандартных.


 
TIF ©   (2007-07-17 12:27) [21]


> Может кто сообразит, в чём тут дело?


а? я уже замучался подбирать параметры...


> GraphicEx, не содержит компонентов. Подключаешь одноименный
> модуль и в обычный TImage можно загружать еще кучу форматов
> помимо стандартных.


не знаю, не чоень понятно...


 
Dimaxx ©   (2007-07-17 14:01) [22]


> не знаю, не чоень понятно...

А что непонятного? Кидаешь модули GraphicEx либо к своему приложению (либо в определенную папку и прописываешь путь к ним в опциях проекта) и в uses добавляешь GraphicEx.



Страницы: 1 вся ветка

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.026 c
15-1184100665
Nic
2007-07-11 00:51
2007.08.12
Командирские часы


15-1184430455
Таможенник
2007-07-14 20:27
2007.08.12
Подскажите, где купить домен?


2-1184413664
ououoy
2007-07-14 15:47
2007.08.12
вопрос про константы


15-1184238783
Megabyte
2007-07-12 15:13
2007.08.12
Правила формирования xml-файлов


2-1184865192
Leggin
2007-07-19 21:13
2007.08.12
Проблемма: работа программы под разными учетными записями.