WPF图像控件不更新图像

时间:2017-06-23 09:36:44

标签: c# wpf image wpf-controls

我正在制作一个项目,要求我获取一堆图像并将其显示为视频。这意味着,我将每秒更新WPF的图像控制30次。 到目前为止没有运气。

BitmapImage img = BitmapToImageSource((Bitmap)image);

this.image_box.Dispatcher.Invoke(() =>
{
    //this.image_box.Source.Freeze();
    this.image_box.Source = img;

});

BitmapImage BitmapToImageSource(Bitmap bitmap)
{
    using (MemoryStream memory = new MemoryStream())
    {
        bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
        memory.Position = 0;
        BitmapImage bitmapimage = new BitmapImage();
        bitmapimage.BeginInit();
        bitmapimage.StreamSource = memory;
        bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapimage.EndInit();

        return bitmapimage;
    }
}

image_box是图像控件(wpf)。 所以,我期待这段代码能够更新图像并给出视频播放的错觉。虽然它什么也没做。我看到窗户上有等待光标。

已编辑----更多信息----

我创建了一个简单的程序来检查图像控制中是否可以更改图像。但结果是一样的。我看到等待光标而没有图像。

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            ImageSource s1;
            ImageSource s2;

            s1 = new BitmapImage(new Uri(@"IMAGE_PATH", UriKind.Absolute));
            s2 = new BitmapImage(new Uri(@"IMAGE_PATH", UriKind.Absolute));

            while (true)
            {
                try
                {
                    if (image.Source == s1)
                        image.Source = s2;
                    else
                        image.Source = s1;
                    System.Threading.Thread.Sleep(1000);
                }
                catch(Exception ex)
                {
                    MessageBox.Show("Error");
                }

            }
        }

1 个答案:

答案 0 :(得分:0)

虽然我知道这个事实,但仍犯了同样的错误。 我们不允许在循环中更新GUI。如果我们想这样做,我们需要创建一个单独的线程。