2013-06-19 50 views
1

我创建了一个WriteableBitmap对象,绘制一条线并尝试将其设置为Image控件的源。出于某种原因,程序停止响应,然后在我尝试设置源时5秒钟后关闭。任何人有任何想法有什么不对? (我也使用WriteableBitmapEx)WriteableBitmap崩溃没有消息的程序?

WriteableBitmap bit = new WriteableBitmap(400, 400, 96, 96, PixelFormats.Bgr32, null); 
WriteableBitmapExtensions.DrawLine(bit, 10, 10, 300, 300, Core.PrimaryColor.ColorValue); 
ImageCanvas.Source = bit; // Sets the image to our bitmap, but program crashes for some reason! 

回答

3

当我尝试你的代码,它抛出一个ArgumentException说

WriteableBitmap的需要有Pbgra32像素格式输入。使用 的BitmapFactory.ConvertToPbgra32Format方法自动 任何输入的BitmapSource转换为这个 类接受了正确的格式\ r \ nParametername: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; 
+3

+1发现此问题。只需要添加* WriteableBitmapEx *还提供了一种用于创建'WriteableBitmap':s,'BitmapFactory.New(int pixelWidth,int pixelHeight)'的可移植方法。对于WPF,此方法完全使用上述构造函数参数。如果需要,使用工厂方法而不是基于显式的基于WPF的构造函数可以更轻松地将代码移植到其他平台。 –

+0

非常感谢,@AndersGustafsson +1 for'BitmapFactory.New' – Oztaco

相关问题