Bạn có thể sử dụng một trong những BitmapEncoders
để lưu WriteableBitmap
khung để một mới BitmapImage
Trong ví dụ này, chúng ta sẽ sử dụng PngBitmapEncoder
nhưng chỉ cần chọn một trong đó phù hợp với tình hình của bạn.
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;
}
sử dụng:
BitmapImage bitmap = ConvertWriteableBitmapToBitmapImage(your writable bitmap);
hoặc bạn có thể làm cho điều này là một phương pháp mở rộng cho việc sử dụng dễ dàng
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;
}
}
sử dụng:
WriteableBitmap wbm = // your writeable bitmap
BitmapImage bitmap = wbm.ToBitmapImage();
Nguồn
2013-01-04 21:20:57
Xem [câu trả lời này] (http: //stackoverflow.com/a/13988871/1136211) và thay thế RenderTargetBitmap bởi Wri teableBitmap. Tại sao chính xác bạn cần chuyển đổi này? Nó thường không cần thiết, vì BitmapImage và WriteableBitmap có một lớp cơ sở chung BitmapSource cung cấp tất cả các thuộc tính có liên quan của một hình ảnh. – Clemens