使用从后台线程生成的 RenderTargetBitmap 设置图像源

Set Image Source with generated RenderTargetBitmap from background thread

我正在后台线程中应用模糊以提高性能。此函数返回 RenderTargetBitmap。完成后,我将通过 Dispatcher 调用图像更新并将其作为内容添加到页面中。这是像下面这样完成的:

            System.Windows.Controls.Image image = new System.Windows.Controls.Image();
            Thread screenshotThread = new Thread(new ThreadStart(delegate()
            {
                RenderTargetBitmap img = CaptureScreen(0, 0, actualWidth, actualHeight);
                //System.Windows.Controls.Image image = imgBlur;
                //image = new System.Windows.Controls.Image();
                Application.Current.Dispatcher.Invoke(() =>
                {
                    image.Source = img;
                    image.Width = actualWidth;
                    image.Height = actualHeight;
                    PageContainer.Children.Add(image);
                });
            }));
            screenshotThread.SetApartmentState(ApartmentState.STA);
            screenshotThread.Start();

我正在将图像添加到 PageContainer,这是一个网格。在运行这段代码之后,图片已经添加到页面中了。但是,图像源为空。当前没有图像可见。我怎样才能让这张图片出现?

您在不同的线程上创建了 ImagecontrolRenderTargetBitmap。我很惊讶你没有得到例外。在将其设置为 Image.Source.

之前尝试添加 img.Freeze();