Meilleur moyen d'afficher une image dans WPF
-
05-07-2019 - |
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?
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.