Frage

Zur Zeit arbeite ich an einem Ultraschall-Scan-Projekt, das die Bilder von einer Sonde aquired weiter zeigt, zu tun, dass ich folgenden Code mich schreibe.

XAML:

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

C # Zuordnung:

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

Converter:

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

Diese Methode kostet mich viel (Performance), Gibt es einen besseren Weg, es ??

zu tun
War es hilfreich?

Lösung

Da Sie bereits die DataContext in Code-Einstellung (nicht XAML), warum nicht nur ein paar Schritte überspringen?

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;

Wenn Sie Zugriff auf GetMeImage() haben, sollten Sie es prüfen, zu ändern in Ihre Anwendung besser passen? - Ist es wirklich eine Bitmap zurückkehren müssen

Auch, wie oft Ihr erstes Stück Code ausgeführt wird? Vielleicht möchten Sie, dass zu prüfen, zu ändern oder zu erlauben, es zu ändern, wenn es muss.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top