Форум: "Media";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизМного анимированных GIF ов = много потоков? Найти похожие ветки
← →
_ZeKa (2006-09-28 14:47) [0]Hi to all!
Возникла необходимость создать компонент в котором может крутиться большое кол-во анимированных GIF"ов. Использую модуль gifimage.pas Anders Melander"а. В нём имеется класс TPainter, который и отвечает за отрисовку анимированных гифов. Но он ориентирован на обработку только одного гифа. Значит при возрастании количетства изображений, будет и возрастать кол-во потоков. Можно ли это как-нибудь избежать. Может есть какие-нить другие библиотеки?
← →
_ZeKa (2006-09-28 15:57) [1]Внесу ясность.
TPainter создаёт отдельный поток и работает только с одним гифом.
Хочется чтобы класс, подобный TPaniter"у, имел коллекцию этих гифов. Наверняка что-то подобное уже реализовано.
← →
clickmaker © (2006-09-28 17:59) [2]собссно такой компонент нетрудно написать...
procedure TGifThread.Execute;
begin
while not Terminated do begin
AImage := FImage.Frame[AIndex];
PaintImage(AImage); // код можно передрать из gifimage.pas
Inc(AIndex);
if (AIndex = FImage.FrameCount) then AIndex := 0;
Sleep(FrameDelay);
end;
end;
← →
Asteroid © (2006-09-29 03:54) [3]> clickmaker © (28.09.06 17:59) [2]
Полагаю, что это будет не совсем корректно работать с несколькими гифами с разной длиной задержки между кадрами. Скорее всего для Sleep надо искать ближайший по времени следующего кадра gif...
← →
_ZeKa (2006-09-29 09:22) [4]Точно :). Спасибо
← →
clickmaker © (2006-09-29 10:18) [5]собссно, самое главное забыл:
while not Terminated do begin
for i := 0 to FImageCount - 1 do begin
AImage := FImages[i].Frame[FImages[i].CurrentIndex];
...
т.е. один поток для всех
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.054 c