Pergunta

Atualmente estou trabalhando em um projeto de digitalização ultra-som, que exibe a continua imagens adquirido a partir de uma sonda, para fazer que eu estou escrevendo código a seguir.

XAML:

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

C # Assignment:

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

Este método está me custando muito (performance), Existe alguma maneira melhor de fazer isso ??

Foi útil?

Solução

Como você já está definindo o DataContext em código (não XAML), porque não basta pular algumas etapas?

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 você tem acesso a GetMeImage(), você pode querer considerar alterá-lo para melhor ajuste para a sua aplicação -? Será que realmente precisa retornar um Bitmap

Além disso, como muitas vezes é o seu primeiro pedaço de código que está sendo executado? Você pode querer considerar alterar isso, ou permitindo que variam quando ele precisa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top