VC++实现输出GIF到窗体并显示GIF动画的方法

2025-05-27 0 48

本文讲述了VC++在窗体中显示GIF动画的方法,这是主要代码部分,在这段代码中,VC++将使用GDI技术加载GIF图像,定义GUID数组、定义指针、初始化各成员变量、释放属性对象、释放GUID等资源等。

代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53
//加载GIF文件

void COutputGIFDlg::OnBrowse()

{

CFileDialog flDlg(TRUE, "", "", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

"GIF|*.gif;||");//定义文件打开对话框

if (flDlg.DoModal() == IDOK)

{

CString szText;

szText = flDlg.GetPathName();

m_FileName.SetWindowText(szText);

m_pBmp = Bitmap::FromFile(szText.AllocSysString()); //加载GIF图像

szText.ReleaseBuffer();

m_nCount = m_pBmp->GetFrameDimensionsCount(); //获取帧维数

GUID *pGuids = new GUID[m_nCount]; //定义一个GUID数组

m_pBmp->GetFrameDimensionsList(pGuids,m_nCount); //获取图像帧的GUID

m_FrameCount = m_pBmp->GetFrameCount(pGuids); //获取GIF帧数

UINT nSize; //定义一个整型变量

m_nCount = 0; //初始化成员变量

m_pBmp->GetPropertySize(&nSize, &m_nDelay); //获取属性大小

PropertyItem *pItem = NULL; //定义属性指针

pItem = (PropertyItem*)malloc(nSize); //为属性指针分配合适的空间

m_pBmp->GetAllPropertyItems(nSize, m_nDelay, pItem);//获取属性信息

m_nDelay = ((long*)pItem->value)[0]; //获取第一帧的延时

free(pItem); //释放属性对象

delete [] pGuids; //释放GUID

m_nIndex = 0; //初始化成员变量

KillTimer(1);

SetTimer(1, 300, NULL);

}

}

void COutputGIFDlg::OnTimer(UINT nIDEvent)

{

GUID Guid = FrameDimensionTime; //定义一个GUID

CDC* pDC = GetDC(); //获取窗口的设备上下文

//定义一个内存画布

CMemDC dc(pDC, CRect(20, 50, m_pBmp->GetWidth()+20, m_pBmp->GetHeight()+50));

Graphics gh(dc.m_hDC); //定义一个图像对象

//向设备上下文中绘制图像

gh.DrawImage(m_pBmp, 0, 0, m_pBmp->GetWidth(), m_pBmp->GetHeight());

m_pBmp->SelectActiveFrame(&Guid, m_nIndex++);//设置下一帧

if(m_nIndex == m_FrameCount) //判断当前帧是否为尾帧

m_nIndex = 0; //将当前帧设置为第一帧

CDialog::OnTimer(nIDEvent);

}

void COutputGIFDlg::OnCancel()

{

if (m_pBmp != NULL)

{

delete m_pBmp;

m_pBmp = NULL;

}

CDialog::OnCancel();

}

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 VC++实现输出GIF到窗体并显示GIF动画的方法 https://www.kuaiidc.com/76089.html

相关文章

发表评论
暂无评论