Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.068 c
2-1184426431
Kolan
2007-07-14 19:20
2007.08.12
Установка ActivePage у PageControl до перерисовки стирает&amp;#133


15-1184329607
Zagaevskiy
2007-07-13 16:26
2007.08.12
Проводник


15-1184317254
TUser
2007-07-13 13:00
2007.08.12
Ошибка в 17й строке


2-1184580673
httpbeginer
2007-07-16 14:11
2007.08.12
создание строки HTTP запроса


2-1184396614
Officeman
2007-07-14 11:03
2007.08.12
Как изравить от такого разделителя ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский