Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Много анимированных GIF'ов = много потоков? [D7, WinXP]


_ZeKa ©   (2006-09-28 14:47:00) 

Hi to all!
Возникла необходимость создать компонент в котором может крутиться большое кол-во анимированных GIF'ов. Использую модуль gifimage.pas Anders Melander'а. В нём имеется класс TPainter, который и отвечает за отрисовку анимированных гифов. Но он ориентирован на обработку только одного гифа. Значит при возрастании количетства изображений, будет и возрастать кол-во потоков. Можно ли это как-нибудь избежать. Может есть какие-нить другие библиотеки?


clickmaker   (2006-09-29 10:18:00) [1]

собссно, самое главное забыл:

while not Terminated do begin
  for i := 0 to FImageCount - 1 do begin
   AImage := FImages[i].Frame[FImages[i].CurrentIndex];
   ...

т.е. один поток для всех


_ZeKa   (2006-09-29 09:22:00) [2]

Точно :). Спасибо


Asteroid   (2006-09-29 03:54:00) [3]

> clickmaker ©   (28.09.06 17:59) [2]
Полагаю, что это будет не совсем корректно работать с несколькими гифами с разной длиной задержки между кадрами. Скорее всего для Sleep надо искать ближайший по времени следующего кадра gif...


clickmaker   (2006-09-28 17:59:00) [4]

собссно такой компонент нетрудно написать...
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;


_ZeKa   (2006-09-28 15:57:00) [5]

Внесу ясность.
TPainter создаёт отдельный поток и работает только с одним гифом.
Хочется чтобы класс, подобный TPaniter'у, имел коллекцию этих гифов. Наверняка что-то подобное уже реализовано.


Наверх

Титульная страница Поиск, карта сайта Написать письмо