社区
图形处理/算法
帖子详情
MFC 用IPicture显示jpg图片 闪烁很严重
hunanrenjia
2010-05-07 03:21:35
我在MFC中用picture控件显示jpg图片,当图片替换很快的时候闪烁很严重,请问各位要怎么解决啊?
小弟在线等待,请各位大哥踊跃回答一下。
谢谢各位了!
...全文
453
12
打赏
收藏
MFC 用IPicture显示jpg图片 闪烁很严重
我在MFC中用picture控件显示jpg图片,当图片替换很快的时候闪烁很严重,请问各位要怎么解决啊? 小弟在线等待,请各位大哥踊跃回答一下。 谢谢各位了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
灬光影相生灬
2010-05-09
打赏
举报
回复
用双缓冲吧
1)、为屏幕 DC 创建兼容的内存 DC:CreateCompatibleDC()
if(!m_dcMemory.CreateCompatibleDC(NULL)) // CDC m_dcMemory;
{
::PostQuitMessage(0);
}
2)、创建位图:CreateCompatibleBitmap()
m_Bmp.CreateCompatibleBitmap(&m_dcMemory, rt.Width(), rt.Height()); // CBitmap m_Bmp;
3)、把位图选入设备环境:SelectObject(),可以理解为选择画布
::SelectObject(m_dcMemory.GetSafeHdc(), m_Bmp);
4)、把绘制好的图形“拷贝“到屏幕上:BitBlt()
pdcView->BitBlt(0, 0, rt.Width(), rt.Height(), &m_dcMemory, 0, 0, SRCCOPY);
Ipicture读取文件后绘制到兼容DC 然后再ondraw上面或者你要显示的函数里面调用
pdcView->BitBlt(0, 0, rt.Width(), rt.Height(), &m_dcMemory, 0, 0, SRCCOPY);
就可以了,我试过了 速度很快,
卡卡布布
2010-05-09
打赏
举报
回复
用OPENCV中的CvvImage类来显示应该比较容易,我做过一个MFC界面,摄像头通过定时器抓取图像,然后显示在picture控件上,用上述方法效果很好
程老师2088
2010-05-08
打赏
举报
回复
我只知道双缓冲
Eleven
2010-05-07
打赏
举报
回复
GDI+ CImage类
向立天
2010-05-07
打赏
举报
回复
[Quote=引用 5 楼 hunanrenjia 的回复:]
CRect rect;
CClientDC dc(wnd);
wnd->GetClientRect(rect);
//在堆上分配空间
HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE, DATASIZE);
LPVOID pvdata = NULL;
//锁定堆空间,获取指向堆空间的指针
pvdata = GlobalLock(m_hgl……
[/Quote]
我是问你在哪个函数里调用的
wangli820
2010-05-07
打赏
举报
回复
1.先把 OnEraseBkgnd直接返回TRUE
2.双缓存
fandh
2010-05-07
打赏
举报
回复
先把 OnEraseBkgnd直接返回TRUE
看看效果如何!
hunanrenjia
2010-05-07
打赏
举报
回复
CRect rect;
CClientDC dc(wnd);
wnd->GetClientRect(rect);
//在堆上分配空间
HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE, DATASIZE);
LPVOID pvdata = NULL;
//锁定堆空间,获取指向堆空间的指针
pvdata = GlobalLock(m_hglobal);
//将文件数据读区到堆中
memcpy(pvdata, gK2MNet_ctrl.videoBuf, DATASIZE);
IStream* m_stream;
GlobalUnlock(m_hglobal);
//在堆中创建流对象
CreateStreamOnHGlobal(m_hglobal, TRUE, &m_stream);
//利用流加载图像
OleLoadPicture(m_stream, DATASIZE, TRUE, IID_IPicture, (LPVOID*) &m_showpicture);
m_showpicture->get_Width(&m_width);
m_showpicture->get_Height(&m_height);
PicPixelWidth = ::MulDiv(m_width, GetDeviceCaps(dc.GetSafeHdc(),LOGPIXELSX), HIMETRIC_INCH);
PicPixelHeight = ::MulDiv(m_height, GetDeviceCaps(dc.GetSafeHdc(),LOGPIXELSX), HIMETRIC_INCH);
SetScroll(PicPixelWidth,PicPixelHeight); //设置滚动条函数
SetScrollRange(SB_VERT,0,(int)(PicPixelHeight/26.45)-rect.Height());
SetScrollRange(SB_HORZ,0,(int)(PicPixelWidth/26.45)-rect.Width());
m_showpicture->Render(dc,1,50,(int)(m_width/26.45),(int)(m_height/26.45),0,m_height,m_width,-m_height,NULL);
m_showpicture->Release();
m_showpicture = NULL;
m_stream->Release();
m_stream = NULL;
GlobalFree(m_hglobal);
pvdata = NULL;
这是我显示jpg图片的代码,要怎么改啊!
向立天
2010-05-07
打赏
举报
回复
你这图贴哪了?
hunanrenjia
2010-05-07
打赏
举报
回复
没做过,能不能详细一点。
fandh
2010-05-07
打赏
举报
回复
双缓冲 贴图!
自己画!
同时,把OnEraseBkgnd直接返回TRUE
hunanrenjia
2010-05-07
打赏
举报
回复
请帮帮忙!!!!!!!!!!
MFC
结合I
Pic
tu
re实现多格式图像
显示
与处理
MFC
中集成I
Pic
tu
re接口实现跨格式图像
显示
的完整方案 在现代Windows桌面应用开发中,图像展示早已不再是简单的“贴图”操作。尤其是在
MFC
(Microsoft Foundation Classes)这类历史悠久但仍广泛使用的框架里,...
MFC
CListCtrl
图片
列表并添加背景
图片
MFC
CListCtrl
显示
图片
模式需要关联CImageList,并且增加背景
图片
(抓狂三天,比网上自绘完美) 头文件定义 CImageList* ListImages; CListCtrl *ListIcons; CPP 初始化列表 CRect rect; GetClientRect(&...
Win32程序中
显示
JPG
、GIF
转自:http://dev.csdn.net/article/10/10632.shtm 用VB的
pic
tu
re控件我可以轻松的搞定
JPG
和GIF,可到了VC、
MFC
下,一切都变得无处适从。怎么办呢?Follow me~VB的
pic
tu
re控件基于COM的I
Pic
tu
re接口,I
Pic
tu
re一般...
在你的
MFC
应用程序中
显示
一个
JPG
文件
在你的
MFC
应用程序中
显示
一个
JPG
文件原著:Paul DiLascia翻译:flyzling 原文出处:MSDN Magazine October 2001(C++ Q&A)原代码下载:CQA0110.exe (202KB) 在VB中,我可以通过创建一个图像控件来
显示
一个
JPG
或GI
MFC
文本、图形、图像、GDI+处理
nFormat:文本被格式化的方式,即文本在区域的
显示
方式。 CRect rc(100,20,300,200); CString str = " 你是年少的欢喜 !"; CBrush brush(RGB(0,0,0,0)); //pDC->FrameRect(rc,&brush); pDC->DrawText...
图形处理/算法
19,466
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章