MFC中怎么实现多个图片的连续显示?
我添加了一个Picture控件,用程序可以调用图片并显示,但是我想让在这个控件里在某个时间段里边连续显示几张图片,每张图片停留一段时间。我创建的是一个基于对话框的MFC工...
我添加了一个Picture控件,用程序可以调用图片并显示,但是我想让在这个控件里在某个时间段里边连续显示几张图片,每张图片停留一段时间。我创建的是一个基于对话框的MFC工程。哪位大侠能帮帮忙,小弟感激不尽!
要是有源码,发我邮箱664636261@qq.com谢谢 展开
要是有源码,发我邮箱664636261@qq.com谢谢 展开
展开全部
在C...APP文件的InitInstance()里写一段SetTimer(1,1000,NULL);其中1000可以改为你要时间,单位毫秒。然后在C...Dlg上右键--增加消息处理,选择WM_TIMER,选择添加并编辑,在OnTimer()里写如下:
static int x = 0;
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1+(x++));
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dc;
dc.CreateCompatibleDC(pDC);
dc.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
// pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dc,0,0 ,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
当然,IDB_BITMAP1+x++的前提是你导入的资源是按顺序的,如果不行,请在IDB_BITMAP1上右键,gotodefinition,(或打开Resource.h),然后自行修改值,使其按顺序来。当然你也可以用取模的方法来时x的值循环起来。
static int x = 0;
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1+(x++));
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dc;
dc.CreateCompatibleDC(pDC);
dc.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
// pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dc,0,0 ,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
当然,IDB_BITMAP1+x++的前提是你导入的资源是按顺序的,如果不行,请在IDB_BITMAP1上右键,gotodefinition,(或打开Resource.h),然后自行修改值,使其按顺序来。当然你也可以用取模的方法来时x的值循环起来。
展开全部
加个定时器就好,在你希望的时间里打开定时器,这个定时器的功能设定为定时(你希望停留的时间)更换图片。完毕后关闭定时器。
定时器会用吧?
在你VC的类视图CLASS VIEW里 选中你的DLG类,右键单击有个ADD WINDOWS MESSAGE HANDLER··· 里面找到WM_TIMER加入,即加入了定时器。再填写相应代码即可。
定时器会用吧?
在你VC的类视图CLASS VIEW里 选中你的DLG类,右键单击有个ADD WINDOWS MESSAGE HANDLER··· 里面找到WM_TIMER加入,即加入了定时器。再填写相应代码即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 使用定时器(WM_TIMER , OnTimer)
2. 显示一张图片,然后开始定时器
3. 写一个定时器响应函数,到时后替换为下一张
4. 直到最后一张重新开始
2. 显示一张图片,然后开始定时器
3. 写一个定时器响应函数,到时后替换为下一张
4. 直到最后一张重新开始
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询