Il modo migliore per visualizzare l'immagine in WPF
-
05-07-2019 - |
Domanda
Attualmente sto lavorando a un progetto di scansione ad ultrasuoni, che mostra le immagini continue acquisite da una sonda, per farlo sto scrivendo il seguente codice.
XAML:
<Image Name="imgScan" DataContext="{Binding}" Source="{Binding Path=prescanImage,Converter={StaticResource imgConverter}}" />
C # Assegnazione:
Bitmap myImage = GetMeImage();
imageMem = new MemoryStream();
myImage .Save(imageMem, ImageFormat.Png);
imgScan.DataContext = new { prescanImage = imageMem.ToArray() };
Convertitore:
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;
}
Questo metodo mi sta costando molto (prestazioni), c'è un modo migliore per farlo ??
Soluzione
Dato che stai già impostando DataContext
nel codice (non xaml), perché non saltare alcuni passaggi?
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;
Se hai accesso a GetMeImage ()
, potresti voler considerare di modificarlo per adattarlo meglio alla tua applicazione - Ha davvero bisogno di restituire un Bitmap
?
Inoltre, con che frequenza viene eseguita la tua prima parte di codice? Puoi prendere in considerazione l'idea di modificarlo o di permettergli di variare quando è necessario.