Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > gif анимация


Автор: NosfBlazE 7.1.2009, 21:02
Здравствуйте.  smile 

Среда - Delphi 2009
Есть картинка - gif анимация

Собственно вопрос: как вывести в приложении gif анимацию?  smile 

P.S. RxLib не предлагать, так как с 2009 версией данная библиотека не работает.
P.P.S. Скажу честно, качал модули http://forum.vingrad.ru/forum/topic-67534/anchor-entry1007980/0.html и http://www.tolderlund.eu/delphi/, но, как пользоваться ими, я так и не разобрался. Вернее как интегрировать в Delphi 2009.

Автор: Romikgy 7.1.2009, 22:26
Цитата(NosfBlazE @  7.1.2009,  20:02 Найти цитируемый пост)
Delphi 2009

понимает 
Цитата(NosfBlazE @  7.1.2009,  20:02 Найти цитируемый пост)
gif анимация

в стандартном компонентне Timage 

Автор: Данкинг 7.1.2009, 22:34
Цитата(Romikgy @  7.1.2009,  22:26 Найти цитируемый пост)
в стандартном компонентне Timage  

А подключить-то что надо для этого? Сам когда-то давно использовал, но не помню сейчас.

Автор: Romikgy 7.1.2009, 22:39
да точно немного подзабыл:(
Код

uses GIFImg;

var
g: TGIFImage;

g:=TGIFImage.Create;
g.LoadFromFile('xxxx.gif');
g.Animate:=True;
Image1.Picture.Assign(g);
g.Free;

Автор: NosfBlazE 7.1.2009, 23:33
Romikgy
Спасибо большое! Заработало.
Не знал, что в 2009 изначально есть поддержка gif анимации.

Автор: NosfBlazE 7.1.2009, 23:55
Romikgy
теперь другой вопрос. Может подскажете более его рациональное решение, чем я тут сейчас выдумываю.  smile 
Как запихнуть эту gif анимацию в .exe  файл, т.е. чтобы мне не надо была поставлять вместе с программой еще и эту гифку, которая в ней подгружается? Сделать просто один независимый экзешник.

То есть нужна альтернатива
Код

g.LoadFromFile('xxxx.gif');

Автор: Данкинг 8.1.2009, 00:28
NosfBlazE, через ресурсы. Только что-то у меня не получается именно с GIF-файлом, хотя с BMP работает нормально.

Автор: NosfBlazE 8.1.2009, 01:53
Данкинг
а поподробнее можно? smile 

Автор: Данкинг 8.1.2009, 03:04
Цитата(NosfBlazE @ 8.1.2009,  01:53)
Данкинг
а поподробнее можно? smile

Вот пример из Delphiworld для BMP:

Код


  Create and edit a new text file in your project directory, 
  eg: newres.txt 

  In the file, write: 

  MY_BMP_RES BITMAP "bmpname.bmp" 

  and save the file. 

  Open a dos shell and go to your directory, type this command: 

  brcc32.exe newres.txt 

  this will create a resource file called newres.res with your bitmap. 
}

 unit Unit1;

 implementation

 {$R *.DFM}
 {$R newres.res}  // add this line! 

procedure TForm1.FormCreate(Sender: TObject);
 var
   MyBmp: TBitmap;
 begin
   MyBmp := TBitmap.Create;
   try
     MyBmp.LoadFromResourceName(HInstance, 'MY_BMP_RES');
     // Do something.... 
  finally
     MyBmp.Free;
   end;
 end;


С GIF у меня вылезает ошибка, что ресурс с таким именем типа не найден.

Автор: NosfBlazE 8.1.2009, 03:45

Вот так все заработало!

Код

//...

implementation

{$R *.dfm}
{$R go.RES}

procedure TForm1.FormCreate(Sender: TObject);
var
  MyGIF : TGIFImage;
  ResStream : TResourceStream;
begin
  MyGIF := TGIFImage.Create;
  ResStream := nil;
  try
    ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
    MyGIF.LoadFromStream(ResStream);
    MyGIF.Animate := True;
    Image1.Picture.Assign(MyGIF);
  finally
    MyGIF.Free;
    ResStream.Free;
  end;
end;

//...



Данкинг, про файлы ресурсов я знал. Просто не получалось почему-то скомпилить. о_0 Большое спасибо тебе за помощь.

Автор: AndrYxo 18.1.2009, 00:16
Цитата(NosfBlazE @ 8.1.2009,  03:45)
Вот так все заработало!

Код

//...

implementation

{$R *.dfm}
{$R go.RES}

procedure TForm1.FormCreate(Sender: TObject);
var
  MyGIF : TGIFImage;
  ResStream : TResourceStream;
begin
  MyGIF := TGIFImage.Create;
  ResStream := nil;
  try
    ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
    MyGIF.LoadFromStream(ResStream);
    MyGIF.Animate := True;
    Image1.Picture.Assign(MyGIF);
  finally
    MyGIF.Free;
    ResStream.Free;
  end;
end;

//...



Данкинг, про файлы ресурсов я знал. Просто не получалось почему-то скомпилить. о_0 Большое спасибо тебе за помощь.

Здравстуйте! Столкнулся с проблемой добавления GIF изображения в ресурс и дальнейшего извлечения... и был приятно удивлен найдя решение здесь... NosfBlazE, спасибо за код... Думаю это то, что и мне надо... Но, так как я не сильно в этом соображаю, я так и не понял что писать в самом .rc файле перед тем, как из него ресурс сделать, для данного кода (что бы просто свое изображение вставил и код не насиловал)... Может кто подскажет мне по этому поводу? Был бы очень благодарен. Спасибо smile 

Автор: Rrader 18.1.2009, 08:44
Код

1 RCDATA "MyGIF.gif" 

1 - ID ресурса
MyGIF.gif - имя  файла картинки
RCDATA - обозначает нетипизированные бинарные данные

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)