我正在从网络摄像头捕获图像帧,但是当我将它们设置为 WPF 的图像控件时,它显示为空白。
我正在使用的库返回一个 Bitmap,因此我将其转换为 BitmapImage,然后通过 Dispatcher 将 Image 控件的源设置为 BitmapImage:
void OnImageCaptured(Touchless.Vision.Contracts.IFrameSource frameSource, Touchless.Vision.Contracts.Frame frame, double fps)
{
image = frame.Image; // This is a class variable of type System.Drawing.Bitmap
Dispatcher.Invoke(new Action(UpdatePicture));
}
private void UpdatePicture()
{
imageControl.Source = null;
imageControl.Source = BitmapToBitmapImage(image);
}
private BitmapImage BitmapToBitmapImage(Bitmap bitmap)
{
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, ImageFormat.Png);
ms.Position = 0;
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
return bi;
}
}
我的 Image 控件上的 XAML 声明尽可能通用:
<Image x:Name="imageControl" HorizontalAlignment="Left" Height="100" Margin="94,50,0,0" VerticalAlignment="Top" Width="100"/>
Image 控件中没有显示任何内容 - 没有运行时错误。我究竟做错了什么?
非常感谢您的帮助!