wpf 下新线程内刷新image非常慢的问题

hurry2002 2013-08-28 02:34:42
小弟在做一个视频采集卡的程序,采用的是wpf。新建一个线程读取采集卡内的数据(每帧尺寸:240x320),然后通过Dispatcher往Image控件上画。发现如果Image的控件的尺寸如果比较小(100x100),则刷新的很快,每秒能刷30+帧。但如果把控件拉伸到接近显示屏全屏(80%的面积),则刷新就贼慢,只有6帧/秒左右。
刚开始,以为是采集卡的问题,后来自己写了一个简单的线程(TestThread, 如下),从电脑本地读取固定的图片。发现也是有同样的问题,只能每秒刷新6~7帧。

小弟初学wpf不久,我想里面一定有什么机制我没了解透,还望路过的兄弟们指点指点。谢谢。


private void TestThread(Object obj) {
while (this.mRunning) {

this.imageCapture.Dispatcher.Invoke(new Action(() => {

ImageSource imageSource = new BitmapImage(new Uri(@"d:\\baobao.jpg", UriKind.RelativeOrAbsolute));
this.imageReview.Source = imageSource;

}));
Thread.Sleep(10);
}
}
于此同时,如果我在主线程。例如一个按钮的响应函数内来做一个for循环显示图片的话,计算下来,每秒能显示280张。这是为什么呢?
private void buttonView_Click(object sender, RoutedEventArgs e) {
// 打印开始时间戳
for(int i = 0; i < 1000; i ++){
ImageSource imageSource = new BitmapImage(new Uri(@"d:\\baobao.jpg", UriKind.RelativeOrAbsolute));
this.imageReview.Source = imageSource;
}
// 打印结束时间戳
}
...全文
120 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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