Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
1

Не работает зацикливание gif [D10.1 Berlin]

18.01.2019, 14:15. Показов 2482. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, делаю программную сборку gif анимации, сама картинка собирается и проигрывается всего 1 раз (нужно циклично), есть флаг glContinously который используется только при Animate := True и означает циклическое воспроизведение анимации, но это не работает, но почему? Что делаю не так?
Вот пример этого недоразумения:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var b: TBitmap;
    Gif: TGifImage;
begin
    Gif := TGifImage.Create;
    b:= TBitmap.Create;
    try
      b.Width:= Image1.Width;
      b.Height:= Image1.Height;
      b.Canvas.TextOut(10, 10, 'sdfgdsgshfy');
      Gif.Add(b);
      b.Canvas.TextOut(30, 30, 'jhfgdsdgdfhfhjgshfy');
      Gif.Add(b);
      Gif.Animate := True;
      Gif.AnimationSpeed:= 30;
      Gif.AnimateLoop := glContinously;
      Image1.Picture.Assign(Gif);
    finally
      gif.Free;
      b.Free;
    end;
end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2019, 14:15
Ответы с готовыми решениями:

Имя формы/модуля по умолчанию D10.1 Berlin
Как задать имя формы и модуля по умолчанию? Открываю свой D10.1 Berlin создаю новый проект и в...

Стандартные визуальные стили D10.1 Berlin - Тормозят!
Добавил в ПО возможность смены скинов, использовал для этого стандартные стили RAD Studio,...

CreateProcess работает странно в D10
Существует программа, в которой основная невидимая программа-диспетчер поочередно запускает другие...

Использование меток: зацикливание не работает
Здравствуйте. Написал такую процедуру: procedure Make(Tmax, h, a:real; var b,t:mas; var...

8
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
19.01.2019, 09:45 2
нужно смотреть, как реализовано Picture.Assign()
предположим, что там создается копия объекта GifImage (иначе это все должно вообще падать с ошибкой AV)
возможно, для этого Picture.Assign вызывает GifImage.Assign
и скорее всего, там не копируется значение AnimateLoop
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
19.01.2019, 12:07  [ТС] 3
krapotkin, дело в том, что Picture.Assign() тут вообще не причем, если вместо этого делать Gif.SaveToFile() то полученный локальный гиф файл так же воспроизводится только 1 раз.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
19.01.2019, 15:10 4
значит, ошибка прямо в TGifImage, что бы это ни было
а кто-то вообще его видел проигрывающимся нормально ?
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
20.01.2019, 18:19  [ТС] 5
Ну собственно оно и понятно что косяк в исходном коде.
Следовательно есть смысл изменить характер вопроса.
Как (с помощью чего) можно программно создать гифку с замкнутым циклом воспроизведения? Как-то не особо хочется ковырять исходники и выискивить/исправлять косяк в Gifimage.pas.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
20.01.2019, 21:33 6
Сегодня с вами Капитан Очевидность, и он советует:
1. написать свой мегакласс - наследник TGraphic чтобы делал то что надо
2. исправить ошибку в том, что у вас на руках
3. найти рабочую библиотеку

4. я преодолел лень. открыл берлин. написал
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.....
uses
  Vcl.Imaging.GIFImg;
 
{$R *.dfm}
 
procedure TfMainForm.b1Click(Sender: TObject);
var
  gif:TGIFImage;
begin
  gif := TGIFImage.Create;
  gif.LoadFromFile('C:\TempProjects\_VCLProject\clocks.gif');
  gif.Animate := true;
  img1.Picture.Assign(gif);
  img1.Transparent := true;
  gif.Free;
end;
и о чудо, все работает, анимируется и зацикливается
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
20.01.2019, 21:48  [ТС] 7
Цитата Сообщение от krapotkin Посмотреть сообщение
и о чудо, все работает, анимируется и зацикливается
Вы суть задачи видимо не поняли. Проиграть существующий, правильно собранный он (TGifImage) может (мне это не надо). А вот правильно собрать/создать зацикленный файл не может.
Цитата Сообщение от krapotkin Посмотреть сообщение
3. найти рабочую библиотеку
Вот об этом то сейчас и вопрос, кто такую видел, как звать ее?
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
20.01.2019, 22:01 8
Лучший ответ Сообщение было отмечено TFullControl как решение

Решение

правильно собрать файл из чего???
гиф даже в самом грубом приближении это набор картинок и таймингов между ними
никаких действий по пересборке GIF вообще никто не обещал
что есть в контейнере, то и записывает обратно в файл.

для записи вот ЭТОГО:
http://home.onego.ru/~chiezo/gif.htm
требуется чтобы программист сформировал целый набор всяких типов и объектов
а не просто Animation := true
1
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
20.01.2019, 22:14  [ТС] 9
Цитата Сообщение от krapotkin Посмотреть сообщение
для записи вот ЭТОГО:
Да спасибо, разобрался, то что надо.
0
20.01.2019, 22:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2019, 22:14
Помогаю со студенческими работами здесь

Не работает GIF
не работает GIF(показывает только первый кадр) при запуске через стандартную программу просмотра...

Анимированный gif не работает в C++ 2010
Всем привет, у меня RAD Studio C++ 2010, ставлю комопнент Image туда запихиваю файл gif, но когда...

Не работает gif-анимация на форме
Добрый день. Как правильно добавить анимацию на форму чтобы она работала. Пробовал добавлять как...

Не работает анимация GIF в background image
Балуюсь с Windows Form в конструкторе Visual Studio... Захотелось сделать анимированый фон....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru