Анимированные GIF и TDrawgrid в Delphi 2007 - PullRequest
3 голосов
/ 08 апреля 2011

Я могу нарисовать изображение, используя что-то вроде кода ниже:

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

Теперь GIF для этого компонента imgGIF загружается через

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

Я устанавливаю

GIFImageDefaultAnimate := True;
GIFImageDefaultTransparent := True;

Средой является Delphi 2007, использующая TGifImage, который поставляется с DVD-диском Delphi 2007.Это вообще возможно?Чтобы отобразить анимированный GIF в ячейке TDrawgrid?

Я не думаю, что это так, поскольку canvas.draw только рисует изображение, а не вставляет компонент в ячейку - насколько я понимаю, этотолько рисунок фирмы на GIF.

1 Ответ

3 голосов
/ 08 апреля 2011

Когда для TGIFImage.Animate установлено значение True, вызов Canvas.Draw() отобразит текущий кадр анимации.Когда TGIFImage помещается внутри TImage, TImage использует событие TGraphic.OnChange для автоматической перерисовки последнего кадра при запуске анимации.Чтобы сделать то же самое с TDrawGrid, вам придется периодически вызывать Canvas.Draw(), например, в таймере, интервал которого равен значению свойства TGIFImage.FrameDelay.В противном случае загрузите изображение GIF в отдельный экземпляр TGIFImage для использования TDrawGrid, чтобы можно было использовать событие TGraphic.OnChange.

...