gpt4 book ai didi

wpf - 如何在 WPF 中将 WriteableBitmap 对象转换为 BitmapImage 对象

转载 作者:行者123 更新时间:2023-12-04 10:26:39 24 4
gpt4 key购买 nike

我如何转换 WriteableBitmap反对 BitmapImage WPF中的对象?

This link涵盖 Silverlight,WPF 中的过程与 WriteableBitmap 不同对象没有 SaveJpeg方法。

所以我的问题是如何转换 WriteableBitmap反对 BitmapImage WPF中的对象?

最佳答案

您可以使用 BitmapEncoders 之一保存 WriteableBitmap框架到新 BitmapImage
在本例中,我们将使用 PngBitmapEncoder但只需选择适合您情况的一种。

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();

关于wpf - 如何在 WPF 中将 WriteableBitmap 对象转换为 BitmapImage 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com