1、在xaml端创建一个Image对象,Source绑定到 WriteableBitmap 对象
2、在Controller中创建WriteableBitmap 对象 命名为WriteBitMap
3、在直播流回调的函数里面使用如下代码快速绘制图片数据
3.1当首次接收到数据,或者当推流画布大小改变时,创建对象,并将图片绘制
BitmapPalette palette = new BitmapPalette(new List<Color>() { Colors.Blue,Colors.Green,Colors.Red });
BitmapSource src = BitmapSource.Create(width, heigth, 96, 96, PixelFormats.Bgra32, palette, callback.pBuf, width * heigth * 4, width * 4);
WriteBitMap = new WriteableBitmap(src);
3.2如不是首次接收数据,则直接调用如下代码将数据绘制到Image
WriteBitMap.WritePixels(new Int32Rect(0, 0, WriteBitMap.PixelWidth, WriteBitMap.PixelHeight), callback.pBuf, width * heigth * 4, width * 4);
至此完成高效低耗的绘图,确保了内存中的每一帧数据,都会在绘制完成后进行销毁