我收到这个错误。这是代码:
Image image;
BitmapImage BmpImg;
MemoryStream ms;
public void Convert()
{
ms = new MemoryStream();
image.Save(ms, ImageFormat.Jpeg);
BmpImg = new BitmapImage();
BmpImg.BeginInit();
BmpImg.StreamSource = new MemoryStream(ms.ToArray());
BmpImg.EndInit();
}
private void Btn_Click(object sender, RoutedEventArgs e)
{
Dispatcher.Invoke(new Action(() => { Image.Source = BmpImg; }));
}
如何将 System.Drawing.Image 转换为 BitmapImage 并在 wpf 上显示相同的内容?
BmpImg
在后台线程上创建。您无法绑定到Image Source DP
在 UI 线程以外的线程上创建的对象。
既然你正在使用Dispatcher
,我假设您现在如何在 UI 线程上委托东西。
所以你需要做的就是把创建BmpImg
也通过 Dispatcher 在 UI 线程上。
你也可以像这样获得 UI 调度程序 -App.Current.Dispatcher
.
OR
正如@Clemens 在评论中建议的那样,如果您致电Freeze()
在 BitmapImage 实例上,您可以跨线程访问它。
BmpImg.Freeze()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)