Другой вариант - использовать DOCUMENT из @ angular / platform-browser.
import {DOCUMENT} from '@angular/platform-browser';
constructor(@Inject(DOCUMENT) private document: Document) {
let url = document.location.protocol +'//'+ document.location.hostname + ':my_port' );
}
Андерс Меландер, написавший исходный TGIFImage , имеет следующий ответ .
Вам необходимо добавить блок расширения «Netscape Loop» к первому кадру вашего GIF. Блок цикла должен быть первым расширением, которое вы определяете для кадра, иначе он не будет работать.
См. Демонстрацию Animate , чтобы узнать, как создать анимированный GIF.
Вот пример фрагмент кода из демонстрации Animate :
// Add the source image to the animation
Result := GIF.Add(Source);
// Netscape Loop extension must be the first extension in the first frame!
if (GIF.Images.Count = 1) then
begin
LoopExt := TGIFAppExtNSLoop.Create(Result);
LoopExt.Loops := 0; // Number of loops (0 = forever)
end;
Вы можете просмотреть документацию TGIFImage здесь .
Вы можете увидеть пример создания анимированного GIF на моей домашней странице www.tolderlund.eu/delphi/ Существует также исходный TGIFImage для Delphi 5 и для Delphi 6, Delphi 7, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009.
Нужен хотя бы таймер и несколько методов устранения мерцания.
См. Пример в модуле rxAnimate.pas из RXLibrary. (доступен бесплатно. Исходные коды на SourceForge.net или http://www.dummzeuch.de/delphi/english.html ).
Также есть исходники для аналогичного компонента на JVCL.
var Gif:TGifImage;
begin
//Setting the delay for each frame
TGIFGraphicControlExtension.Create(Gif.Add(image1.Picture.Bitmap)).Delay := 300;
TGIFGraphicControlExtension.Create(Gif.Add(image2.Picture.Bitmap)).Delay := 300;
TGIFGraphicControlExtension.Create(Gif.Add(image3.Picture.Bitmap)).Delay := 300;
//Adding loop extension in the first frame (0 = forever)
TGIFAppExtNSLoop.Create(Gif.Images.Frames[0]).Loops := 0;
Gif.SaveToFile('gif.gif');
end;