我能够使用类似以下代码的方式绘制图像:

ACanvas.Draw(ARect.Left+16, ARect.Top+4, imgGIF.Picture.Graphic )


现在,该imgGIF组件的gif通过

  GIF := TGifImage.Create;
  GIF.LoadFromFile('path\to\gif\processing.gif');
  GIF.Animate := True;
  imgGIF.Picture.Graphic.Assign(GIF);


我正在设定

GIFImageDefaultAnimate := True;
GIFImageDefaultTransparent := True;


环境是Delphi 2007,使用的是Delphi 2007 DVD随附的TGifImage。
这有可能吗?要在TDrawgrid单元上显示动画GIF?

我不认为这是因为canvas.draw只绘制图像,而不是将组件插入单元格中-据我所知,它只是在gif上绘制牢固的图像。

最佳答案

TGIFImage.Animate设置为True时,调用Canvas.Draw()将渲染动画的当前帧。将TGIFImage放在TImage内时,TImage使用TGraphic.OnChange事件在动画运行时自动重画最新的帧。若要对TDrawGrid执行相同的操作,您将必须定期调用Canvas.Draw(),例如在其间隔设置为TGIFImage.FrameDelay属性值的计时器中。否则,请将GIF图像加载到单独的TGIFImage实例中,以供TDrawGrid使用,以便可以利用TGraphic.OnChange事件。

10-05 22:15