标签: tgifimage

一些GIF查看器的Delphi TGIFImage动画问题

我发现使用Delphi 2009创建的动画GIF TGIFImage有时在某些 GIF查看器中无法正常播放.问题是动画过早地重新启动.

请考虑以下示例:

program GIFAnomaly;

{$APPTYPE CONSOLE}

uses
  Windows, Types, Classes, SysUtils, Graphics, GIFImg;

var
  g: TGIFImage;
  bm: TBitmap;

procedure MakeFrame(n: integer);
var
  x: Integer;
  y: Integer;
begin
  for x := 0 to 256 - 1 do
    for y := 0 to 256 - 1 do
      bm.Canvas.Pixels[x, y] := RGB((x + n) mod 255,
        (x + y - 2*n) mod 255, (x*y*n div 500) mod 255);
end;

var
  i: integer;

begin

  bm := TBitmap.Create;
  bm.SetSize(256, 256); …
Run Code Online (Sandbox Code Playgroud)

delphi animation gif animated-gif tgifimage

10
推荐指数
1
解决办法
1804
查看次数

带有动画 GIF 的 TGIFImage - 事件不起作用 - 如何检测动画进度?

DelphiTGIFImage有以下事件:OnPaintOnAfterPaintOnLoopOnEndPaint。但在显示动画 GIF 时,这些事件都不会被调用。

我使用以下代码来显示动画 GIF:

  FGif := (Image1.Picture.Graphic as TGIFImage);
  FGif.OnProgress := GifProgress;
  FGif.OnLoop := GifLoop;
  FGif.OnPaint := GifPaint;
  FGif.OnEndPaint := GifEndPaint;
  FGif.OnAfterPaint := GifAfterPaint;
  FGif.Animate := True;
Run Code Online (Sandbox Code Playgroud)

动画播放时如何提取当前可见帧索引?

如何检测动画何时完成?

如何检测下一帧何时显示?

OnProgress仅在绘制最后一个动画帧后的第一个动画循环期间调用事件 - TGIFImage 将从第一帧继续动画,但此事件停止工作。

我正在使用 Delphi 10.2 东京。

delphi tgifimage

2
推荐指数
1
解决办法
1922
查看次数

标签 统计

delphi ×2

tgifimage ×2

animated-gif ×1

animation ×1

gif ×1