BitmapSource
に変換し、BitmapImage
後で次のコードを使用して画面に描画するビデオ ソフトウェアがあります。問題は、低速のマシンでこのプロセスが少し遅いように見えることです。MS プロファイラーを実行すると、これらのビットマップ操作 (つまり、ToBitmapImage
関数) が、最もコストのかかる呼び出しの上位 4 つであることがわかります。これの効率を改善するためにできることはありますか?
// Conversion
this.VideoImage = bitmapsource.ToBitmapImage();
// Drawing
drawingContext.DrawImage(this.VideoImage, new Rect(0, 0, imageWidth, imageHeight));
// Conversion code
internal static BitmapImage ToBitmapImage(this BitmapSource bitmapSource)
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder()
MemoryStream memorystream = new MemoryStream();
BitmapImage tmpImage = new BitmapImage();
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
encoder.Save(memorystream);
tmpImage.BeginInit();
tmpImage.StreamSource = new MemoryStream(memorystream.ToArray());
tmpImage.EndInit();
memorystream.Close();
return tmpImage;
}