// AnyChat内核回调 public static void VideoData_CallBack(int userId, IntPtr buf, int len, AnyChatCoreSDK.BITMAPINFOHEADER bitMap, int userValue) { if (VideoDataHandler != null) VideoDataHandler(userId, buf, len, bitMap, userValue); }
// 静态委托 public void VideoDataCallbackDelegate(int userId, IntPtr buf, int len, AnyChatCoreSDK.BITMAPINFOHEADER bitMap, int userValue) { int stride = bitMap.biWidth * 3; BitmapSource bs = BitmapSource.Create(bitMap.biWidth, bitMap.biHeight, 96, 96, PixelFormats.Bgr24, null, buf, len, stride); // 将图像进行翻转 TransformedBitmap RotateBitmap = new TransformedBitmap(); RotateBitmap.BeginInit(); RotateBitmap.Source = bs; RotateBitmap.Transform = new RotateTransform(180); RotateBitmap.EndInit(); RotateBitmap.Freeze(); // 异步操作 Action action = new Action(delegate() { Dispatcher.BeginInvoke(new Action(delegate() { if (userId == g_selfUserId) localVideoImage.Source = RotateBitmap; else if (userId == g_otherUserId) remoteVideoImage.Source = RotateBitmap; }), null); }); action.BeginInvoke(null, null); }