Pregunta

Actualmente estoy trabajando en un proyecto de escaneo de ultrasonido, que muestra las imágenes continuas adquiridas de una sonda, para ello estoy escribiendo el siguiente código.

XAML:

<Image Name="imgScan" DataContext="{Binding}" Source="{Binding Path=prescanImage,Converter={StaticResource imgConverter}}" />

Asignación de C #:

Bitmap myImage = GetMeImage();
imageMem = new MemoryStream();
myImage .Save(imageMem, ImageFormat.Png);
imgScan.DataContext = new { prescanImage = imageMem.ToArray() };

Convertidor:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    if (value != null && value is byte[])
    {
      byte[] ByteArray = value as byte[];
      BitmapImage bmp = new BitmapImage();
      bmp.BeginInit();
      bmp.StreamSource = new MemoryStream(ByteArray);
      bmp.EndInit();
      return bmp;
    }
    return null;
}

Este método me está costando mucho (rendimiento), ¿Hay alguna manera mejor de hacerlo?

¿Fue útil?

Solución

Dado que ya está configurando el DataContext en el código (no xaml), ¿por qué no simplemente omite algunos pasos?

Bitmap myImage = GetMeImage();
imageMem = new MemoryStream();
myImage.Save(imageMem, ImageFormat.Png);
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = new MemoryStream(imageMem.ToArray());
bmp.EndInit();
imgScan.Source = bmp;

Si tiene acceso a GetMeImage () , puede considerar modificarlo para que se ajuste mejor a su aplicación. ¿Realmente necesita devolver un Bitmap ?

Además, ¿con qué frecuencia se ejecuta su primer fragmento de código? Es posible que desee considerar modificar eso o permitir que varíe cuando sea necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top