Witam,
Mam problem z wyświetleniem obrazu z kamery w aplikacji WPF (moja pierwsza aplikacja w WPF, zawsze korzystałem z WinForm).
Wcześniej napisałem identyczną aplikację w WinForm.
Zamiast Image.Source = bitmap (WPF), korzystałem z PictureBox.Image = bitmap i nie było żadnego problemu by wyświetlić obraz.
Teraz dość że bitmape muszę zamienić na BitmapSource (nie wiem czy dobrze rozumuje), to jeszcze kontrolkę Image widzi jako oddzielny wątek i wyrzuca błąd (obraz miało wrzucić w Evencie z mojej zewnętrznej biblioteki).
Kończą mi się pomysły na to co robię źle, pomoże ktoś?
O to kod:
private void OpenCameraButton_Click(object sender, RoutedEventArgs e)
{
try
{
cam.Open(_listaKamer.Values[FindedCamera_ComboBox.SelectedIndex]);
cam.AddImageAquiredEvent(camera =>
{
Camera.Core cameraCore = (Camera.Core)camera;
Bitmap bitmap = cameraCore.ByteToImage();
Image.Source = ConvertBitmap(bitmap);
});
if (cam.IsOpened())
{
CloseCamera_Button.IsEnabled = true;
StartAQ_Button.IsEnabled = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
public BitmapSource ConvertBitmap (System.Drawing.Bitmap bitmap)
{
var bitmapData = bitmap.LockBits(
new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat);
var bitmapSource = BitmapSource.Create(
bitmapData.Width, bitmapData.Height, 96, 96, PixelFormats.Gray8, null,
bitmapData.Scan0, bitmapData.Stride * bitmapData.Height, bitmapData.Stride);
bitmap.UnlockBits(bitmapData);
return bitmapSource;
}
Tu jest problem z wątkami:
<code class="c#"> Image.Source = ConvertBitmap(bitmap);
W WinForm miałem tak i było ok:
PictureBox1.Image = bitmap