Question

Je travaille actuellement sur un projet de numérisation par ultrasons, qui affiche les images continues acquises à partir d'une sonde. Pour ce faire, j'écris le code suivant.

XAML:

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

Affectation C #:

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

Convertisseur:

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;
}

Cette méthode me coûte beaucoup de (performance), Y a-t-il une meilleure façon de le faire?

Était-ce utile?

La solution

Puisque vous définissez déjà le DataContext dans le code (pas xaml), pourquoi ne pas simplement ignorer quelques étapes?

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 vous avez accès à GetMeImage () , vous pouvez envisager de le modifier pour l'adapter à votre application - Faut-il vraiment renvoyer un Bitmap ? ? <

De plus, à quelle fréquence votre premier morceau de code est-il exécuté? Vous voudrez peut-être envisager de le modifier ou de le laisser varier quand il le faudra.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top