Melhor maneira imagem de exibição no WPF para
-
05-07-2019 - |
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 ??
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.