wpf 下新线程内刷新image非常慢的问题
小弟在做一个视频采集卡的程序,采用的是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;
}
// 打印结束时间戳
}