按照我先前提出的问题; How do I display two images consecutively like a gif?,有人告诉我,我可以创建一个gif
。
以下是我的理由: tspeedbutton 不接受.gif
分机。
我该如何添加?
btnNotification.Glyph.LoadFromFile(ICON_DIR + '/notification-active.gif');
我用谷歌搜索但由于德尔福而无法找到文档。
您好,
其实我正在尝试创建通知按钮。如果没有通知,则其图像为notification.bmp,但如果有通知,则应该是tspeedbutton上的gif。我添加了一个计时器并轮询服务器,是否有通知给我?在每6秒,如果是,我需要将bmp图像更改为tspeedbutton上的gif
答案 0 :(得分:1)
以干净的方式执行此操作我建议您构建一个新组件。幸运的是,有一个组件是TSpeedButton
并且接受任何类型的TPicture
作为其Glyph
属性,我们所要做的就是修改它以使Glyph动画化,如果它是GIF
因此,请从已接受的答案here
中复制TNCRSpeedButton
的单位
转到以下步骤并将代码行添加到代码中(或者只是将代码替换为该代码)。
procedure TNCRSpeedButton.GlyphChanged(Sender: TObject);
begin
if (FGlyph.Graphic <> nil) and (not FGlyph.Graphic.Empty) then
begin
FGlyphCoordinates.OnChange := nil; // Prevent multiple invalidates
FGlyphCoordinates.X := (Width - FGlyph.Graphic.Width) div 2;
FGlyphCoordinates.Y := (Height - FGlyph.Graphic.Height) div 2;
FGlyphCoordinates.OnChange := CoordinatesChanged;
///// add these lines here ///////////////////////////////////
if (FGlyph.Graphic is TGifImage) then
begin
(FGlyph.Graphic as TGifImage).Animate := True;
end;
//////////////////////////////////////////////////////////////
end;
Invalidate;
end;
现在组件收到TGIFImage
作为其字形时,它将为其设置动画。