如何创建一个位图并在UWP中绘制它?

时间:2018-02-02 23:25:05

标签: c# bitmap uwp

今天我有一个非常简单的问题:如何在UWP应用程序中创建位图并“绘制”它,更改其中的每个像素。

我在StackOverflow上已经阅读了很多东西,但现在我有点困惑,因为有很多不同的类型(WritableBitmap,SoftwareBitmap,BitmapImage,BitmapSource ......现在,在FCU中,他们甚至添加了BitmapIconSource .. 。)以及许多方式......但它们大多以给定的图像文件或来源开头,而不是我的情况。

让我们说,例如,我想要创建一个20x20位图,并希望为每个像素分配一个不同的argb值...然后将其分配给BitmapSource属性。 在UWP中,最好和最有效的方法是什么?

感谢您的耐心和关注。

祝你好运

1 个答案:

答案 0 :(得分:1)

您可以使用WriteableBitmap并直接修改PixelBuffer

var wb = new WriteableBitmap(100, 100);                        
byte[] imageArray = new byte[100 * 100 * 4];
for (int i = 0; i < imageArray.Length; i += 4)
{
    //BGRA format
    imageArray[i] = 0; // Blue
    imageArray[i + 1] = 0;  // Green
    imageArray[i + 2] = 255; // Red
    imageArray[i + 3] = 255; // Alpha
}

using (Stream stream = wb.PixelBuffer.AsStream())
{
    //write to bitmap
    await stream.WriteAsync(imageArray, 0, imageArray.Length);
}

TargetImage.Source = wb;

如果你想要更多的抽象,look into WriteableBitmapEx增加了非常有用且易于使用的扩展方法和助手,使WriteableBitmap变得轻而易举。