123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #ifndef GifAnimUI_h__
- #define GifAnimUI_h__
- #pragma once
- namespace DuiLib
- {
- class CControl;
- #define EVENT_TIEM_ID 100
- class UILIB_API CGifAnimUI : public CControlUI
- {
- public:
- CGifAnimUI(void);
- ~CGifAnimUI(void);
- LPCTSTR GetClass() const;
- LPVOID GetInterface(LPCTSTR pstrName);
- void DoInit() override;
- void DoPaint(HDC hDC, const RECT& rcPaint) override;
- void DoEvent(TEventUI& event) override;
- void SetVisible(bool bVisible = true ) override;
- void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue) override;
- void SetBkImage(LPCTSTR pStrImage);
- LPCTSTR GetBkImage();
- void SetAutoPlay(bool bIsAuto = true );
- bool IsAutoPlay() const;
- void SetAutoSize(bool bIsAuto = true );
- bool IsAutoSize() const;
- void PlayGif();
- void PauseGif();
- void StopGif();
- private:
- void InitGifImage();
- void DeleteGif();
- void OnTimer( UINT_PTR idEvent );
- void DrawFrame( HDC hDC ); // 绘制GIF每帧
- Gdiplus::Image* LoadGifFromFile(LPCTSTR pstrGifPath);
- Gdiplus::Image* LoadGifFromMemory( LPVOID pBuf,size_t dwSize );
- private:
- Gdiplus::Image *m_pGifImage;
- UINT m_nFrameCount; // gif图片总帧数
- UINT m_nFramePosition; // 当前放到第几帧
- Gdiplus::PropertyItem* m_pPropertyItem; // 帧与帧之间间隔时间
- CDuiString m_sBkImage;
- bool m_bIsAutoPlay; // 是否自动播放gif
- bool m_bIsAutoSize; // 是否自动根据图片设置大小
- bool m_bIsPlaying;
- };
- }
- #endif // GifAnimUI_h__
|