2017-12-22 3 views
1

내 이전에 질문 사항; How do I display two images consecutively like a gif?, 나는 gif을 만들 수 있다고 들었습니다.TSpeedButton에서 GIF를 표시하는 방법

여기 내 이유가 있습니다 : tspeedbutton는 나를위한 .gif 확장을 허용하지 않습니다.

어떻게 추가 할 수 있습니까?

btnNotification.Glyph.LoadFromFile(ICON_DIR + '/notification-active.gif'); 

나는 봤지만 델파이로 인해 문서를 찾을 수 없습니다.

안녕하세요

은, 사실은 내가 알림 버튼을 만들려고하고 있습니다. 알림이 없으면 해당 이미지는 notification.bmp이지만 알림이 있으면 tspeedbutton의 gif 여야합니다. 타이머를 추가하고 서버를 폴링 할 때 알림 메시지가 표시됩니까? 6 초마다, 만약 그렇다면 내가 tspeedbutton에 bmp 이미지를 변경해야합니다.

+0

왜 대신 'TImage'를 사용하지 않으시겠습니까? 'TSpeedButton'은'.bmp' 이미지만을 지원합니다. .GIF' 이미지를 불러 와서'(TGIFImage로 Image1.Picture.Graphic) .Animate : = True; ' – Sami

+0

@Sami 알 수없는 그림 확장이 실패했다 (.gif) – Nevermore

+0

어떤 버전을 사용하고 있습니까? – Sami

답변

1

깨끗한 방법으로 이것을하기 위해 새로운 구성 요소를 만드는 것이 좋습니다. 운 좋게도 TSpeedButton이고 그것의 Glyph 속성으로 TPicture의 모든 유형을 허용하는 구성 요소, 우리가 무엇을해야 모두가

는 그래서 TNCRSpeedButton의 단위를 복사합니다 GIF 된 경우 문양을 애니메이션을 수정하는 것입니다있다 허용 된 대답에서 here

다음 절차로 이동하여 코드에 줄을 추가하거나이 절차를 해당 줄로 바꿉니다.

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을 받았다 때.

+0

유권자에게 받아 들여지는 대답은 나의 것이고 나는 'TNCRSpeedbutton'의 저자이다. 나는 금세 판에 파이의 조각을 뿌렸는데, 모든 정보는 여전히 SO입니다. 따라서 제 규칙을 제정하지 않습니다. 내 대답은 무엇입니까? –

관련 문제