Can you guide me on how to create a SoftwareBitmap from pixel data using C++/WinRT?
For example, this test creates a SoftwareBitmap with a blue rectangle and sets it to an Image control (Img1) :
SoftwareBitmap softwareBitmap = GetSoftwareBitmap(400, 400);
SetImageSourceFromSoftwareBitmap(softwareBitmap, Img1());
SoftwareBitmap GetSoftwareBitmap(int nWidth, int nHeight)
{
SoftwareBitmap softwareBitmap(BitmapPixelFormat::Bgra8, nWidth, nHeight, BitmapAlphaMode::Premultiplied);
BitmapBuffer buffer = softwareBitmap.LockBuffer(BitmapBufferAccessMode::Write);
uint8_t* pixels = buffer.CreateReference().data();
int nPixelsSize = nWidth * nHeight * 4;
for (int i = 0; i < nPixelsSize; i += 4)
{
pixels[i] = 255;
pixels[i + 1] = 0;
pixels[i + 2] = 0;
}
return softwareBitmap;
}
IAsyncAction SetImageSourceFromSoftwareBitmap(SoftwareBitmap softwareBitmap, winrt::Windows::UI::Xaml::Controls::Image image)
{
SoftwareBitmapSource bitmapSource;
co_await bitmapSource.SetBitmapAsync(softwareBitmap);
image.Source(bitmapSource);
}