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 forBitmapFactory。新增
var bitmap = BitmapFactory.New(400, 400);
WriteableBitmapExtensions.DrawLine(bitmap, 10, 10, 300, 300, Colors.Black);
image.Source = bitmap;