あなたは私たちがPngBitmapEncoder
を使用しますが、自分の状況に合ったものを選択します。この例では新しいBitmapImage
にWriteableBitmap
フレームを保存するためにBitmapEncoders
のいずれかを使用することができます。
public BitmapImage ConvertWriteableBitmapToBitmapImage(WriteableBitmap wbm)
{
BitmapImage bmImage = new BitmapImage();
using (MemoryStream stream = new MemoryStream())
{
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(wbm));
encoder.Save(stream);
bmImage.BeginInit();
bmImage.CacheOption = BitmapCacheOption.OnLoad;
bmImage.StreamSource = stream;
bmImage.EndInit();
bmImage.Freeze();
}
return bmImage;
}
用法:
BitmapImage bitmap = ConvertWriteableBitmapToBitmapImage(your writable bitmap);
か、この簡単な使用のために拡張メソッド作ることができ
public static class ImageHelpers
{
public static BitmapImage ToBitmapImage(this WriteableBitmap wbm)
{
BitmapImage bmImage = new BitmapImage();
using (MemoryStream stream = new MemoryStream())
{
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(wbm));
encoder.Save(stream);
bmImage.BeginInit();
bmImage.CacheOption = BitmapCacheOption.OnLoad;
bmImage.StreamSource = stream;
bmImage.EndInit();
bmImage.Freeze();
}
return bmImage;
}
}
用法:
WriteableBitmap wbm = // your writeable bitmap
BitmapImage bitmap = wbm.ToBitmapImage();
参照[この回答](HTTP: //stackoverflow.com/a/13988871/1136211)、RenderTargetBitmapをWriで置き換えますteableBitmap。なぜこの変換が必要ですか? BitmapImageとWriteableBitmapには画像の関連するすべてのプロパティを提供する共通の基本クラスBitmapSourceがあるので、通常は必要ありません。 – Clemens