1

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

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!
4

1 回答 1

3

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

输入 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;
于 2013-06-20T06:31:04.637 回答