C# WriteableBitmap在没有消息的情况下使程序崩溃?

C# WriteableBitmap在没有消息的情况下使程序崩溃?,c#,wpf,writeablebitmap,writeablebitmapex,C#,Wpf,Writeablebitmap,Writeablebitmapex,我创建一个WriteableBitmap对象,画一条线并尝试将其设置为Image控件的源。由于某种原因,当我试图设置源时,程序停止响应,5秒钟后关闭。有人知道怎么了吗?(我也在使用WriteableBitmapEx) 当我尝试你的代码时,它抛出一个异常 输入WriteableBitmap需要采用Pbgra32像素格式。使用 BitmapFactory.ConvertToPbgra32Format方法将自动 将任何输入BitmapSource转换为此服务器接受的正确格式 类。\r\n参数名称:wr

我创建一个
WriteableBitmap
对象,画一条线并尝试将其设置为
Image
控件的源。由于某种原因,当我试图设置源时,程序停止响应,5秒钟后关闭。有人知道怎么了吗?(我也在使用WriteableBitmapEx)


当我尝试你的代码时,它抛出一个异常

输入WriteableBitmap需要采用Pbgra32像素格式。使用 BitmapFactory.ConvertToPbgra32Format方法将自动 将任何输入BitmapSource转换为此服务器接受的正确格式 类。\r\n参数名称:writeableBitmap

因此,这项工作:

var bitmap = new WriteableBitmap(400, 400, 96, 96, PixelFormats.Pbgra32, null);
WriteableBitmapExtensions.DrawLine(bitmap, 10, 10, 300, 300, Colors.Black);
image.Source = bitmap;
更新:正如Anders所指出的,您可能应该使用WriteableBitmapEx提供的便携式位图工厂方法来创建位图:

var bitmap = BitmapFactory.New(400, 400);
WriteableBitmapExtensions.DrawLine(bitmap, 10, 10, 300, 300, Colors.Black);
image.Source = bitmap;

+1.为了发现这一点。只想添加WriteableBitmapEx还提供了一种可移植的方法来创建
WriteableBitmap
:s,
BitmapFactory.New(int-pixelWidth,int-pixelHeight)
。对于WPF,此方法正好使用上述构造函数参数。如果需要,使用工厂方法而不是显式的基于WPF的构造函数可以更容易地将代码移植到其他平台。非常感谢@AndersGustafsson+1 for
BitmapFactory。新增
var bitmap = BitmapFactory.New(400, 400);
WriteableBitmapExtensions.DrawLine(bitmap, 10, 10, 300, 300, Colors.Black);
image.Source = bitmap;