社区
图形处理/算法
帖子详情
MFC 用IPicture显示jpg图片 闪烁很严重
hunanrenjia
2010-05-07 03:21:35
我在MFC中用picture控件显示jpg图片,当图片替换很快的时候闪烁很严重,请问各位要怎么解决啊?
小弟在线等待,请各位大哥踊跃回答一下。
谢谢各位了!
...全文
422
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
CListCtrl
图片
列表并添加背景
图片
MFC
CListCtrl
显示
图片
模式需要关联CImageList,并且增加背景
图片
(抓狂三天,比网上自绘完美) 头文件定义 CImageList* ListImages; CListCtrl *ListIcons; CPP 初始化列表 CRect rect; GetClientRect(&rect); rect.left = 0; //zp 20160930 rect.top ...
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一般面向bitmap,其实Windows提供了一个
显示
BMP、
JPG
、GIF的标准方法,你
在你的
MFC
应用程序中
显示
一个
JPG
文件
在你的
MFC
应用程序中
显示
一个
JPG
文件原著:Paul DiLascia翻译:flyzling 原文出处:MSDN Magazine October 2001(C++ Q&A)原代码下载:CQA0110.exe (202KB) 在VB中,我可以通过创建一个图像控件来
显示
一个
JPG
或GI
MFC
文本、图形、图像、GDI+处理
GDI:Graphics Device Interface,图形设备接口 DC:Device Context ,设备上下文 GDI对象:字体CFont,位图CBitmap,画刷CBrush,调色板CPalette,画笔CPen,区域CRgn
VC图像编程
-- VC多媒体编程 -- Visual C++中基于多文档视窗模型的重叠图象拼接技术 摘要 图象拼接是在全景视频系统、地理信息系统等应用中经常遇到的一个问题,本文基于网格匹配的方法对边界部分有重叠的图象提出了一种行之有效的对准算法,并通过平滑因子对图象实现了无缝拼接。并应用文档视窗模型实现了该算法,并完成了位图文件的
显示
、存储等操作,具有一定的普遍意义。
图形处理/算法
19,469
社区成员
50,697
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章