private static BitmapSource AlphaBlending(BitmapSource bitmap, byte[] alphaData)
{
var pixelCount = (uint)(bitmap.Width * bitmap.Height);
var bmp = new WriteableBitmap(new FormatConvertedBitmap(bitmap, PixelFormats.Bgra32, null, 0));
var bytes = new byte[pixelCount * 4];
var rect = new Int32Rect(0, 0, (int)bmp.Width, (int)bmp.Height);
bmp.CopyPixels(rect, bytes, bmp.BackBufferStride, 0);
for (var i = 0; i < alphaData.Length; i++)
{
bytes[i * 4 + 3] = alphaData[i];
}
bmp.WritePixels(rect, bytes, bmp.BackBufferStride, 0);
return bmp;
}