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 ??

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top