VC MFC 中线程中显示图片,cpu占有率很高,怎么解决

hunanrenjia 2010-06-21 10:45:49
如题,我在线程中使用IPicture线程图片,一秒钟显示25张。可以这个程序cpu的占有率达到50%~60%。请问有什么办法可以解决吗?

我可以确定cpu的占有是由这段代码引起的。

if(SUCCEEDED(OleLoadPicture(m_stream, displaySize, 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();
}
...全文
278 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
我的邮箱:huzhihuiemail@163.com

发给我吧!
GResume 2010-06-21
  • 打赏
  • 举报
回复
来接分 来接分 来接分
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
我要显示的是数据流,可以帮帮忙吗。
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
能给我一个IJG的库吗?vc下用的
Antheus 2010-06-21
  • 打赏
  • 举报
回复



hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
IJG这种方法呢?
Antheus 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hunanrenjia 的回复:]
还有谁能帮帮我吗?
[/Quote]

我来帮帮你。
IPicture的老牛拉破车的速度是出了名的。除了换其他方法,没办法。HOHO
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
还有谁能帮帮我吗?
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
循环了,可以确定是这个函数引起的OleLoadPicture
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiuxianshen 的回复:]
你是想通过IPicure来实时渲染你得到的数据流?
[/Quote]

恩,是的。但是我看到使用上面的代码的话,cpu的占有率很高,不用的话,基本不占cpu
向立天 2010-06-21
  • 打赏
  • 举报
回复
你怎么确定的?
这段代码你循环执行了?
LeviZhou 2010-06-21
  • 打赏
  • 举报
回复
不是很懂,不过如果一秒钟显示25张图片的话基本和看电影的帧数差不多了,
如果图片在是比较大的,那系统开销肯定很可观了, 不太了解你的东西,所以不知道如果用缓存的话能不能解决
xiuxianshen 2010-06-21
  • 打赏
  • 举报
回复
你是想通过IPicure来实时渲染你得到的数据流?
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
给点提示吧。
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
谁能帮我看看啊!怎样减少cpu的使用率啊
xiuxianshen 2010-06-21
  • 打赏
  • 举报
回复
建议你用cimage加IStream解决
用CImage加载内存里的Image
laviewpbt 2010-06-21
  • 打赏
  • 举报
回复
管他什么在强的库,你这样的代码都是慢。

// IPicture的老牛拉破车的速度是出了名的 这句话也是错误的。


向立天 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hunanrenjia 的回复:]
循环了,可以确定是这个函数引起的OleLoadPicture
[/Quote]
为什么每一次都重复加载
一次性全部加载进来不行么
xfill 2010-06-21
  • 打赏
  • 举报
回复
IJG很好找,Google一下你就知道

http://www.ijg.org/

IJG输入是内存。不是文件。

PS:流文件好像特指视频流媒体吧。
hunanrenjia 2010-06-21
  • 打赏
  • 举报
回复
谁能给我发一个IJG库啊!在vc下能用的,输入方式是流的文件啊
加载更多回复(2)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧