Получаю байты изображения из сокета, которые отправляют мини-колпаком непрерывно. Когда я сохраняю байты в изображение, изображение может быть открыто как обычно. но когда я рендерил байты в WriteableBitmap, это не работает, код, как показано ниже:
void DrawUI(ref byte[] frameBody)
{
try
{
writeableBitmap.WritePixels(new Int32Rect(0, 0, 1080, 1920), frameBody, writeableBitmap.BackBufferStride, 0);
}
catch(Exception e)
{
Console.WriteLine($"catch a exception {e.Message}");
}
}
Когда я изменяю его ниже, это нормально для работы, вопрос в том, что я не хочу делать какое-либо преобразование, потому что скорость имеет значение.
void DrawUI(ref byte[] frameBody)
{
try
{
BitmapSource bms = (BitmapSource)new ImageSourceConverter().ConvertFrom(frameBody);
var bytesPerPixel = bms.Format.BitsPerPixel / 8;
var stride1 = bms.PixelWidth * bytesPerPixel;
byte[] pixels2 = new byte[1080 * 1920 * stride1];
writeableBitmap.WritePixels(new Int32Rect(0, 0, 1080, 1920), pixels2, stride1, 0);
}
catch(Exception e)
{
Console.WriteLine($"catch a exception {e.Message}");
}
}
определяется writeableBitmap:
writeableBitmap = new WriteableBitmap(
//(int)p.win.ActualWidth,//DPI相关
//(int)p.win.ActualHeight,//DPI相关
1080,
1920,
300,
300,
PixelFormats.Bgr32,
null);