我正在尝试在直播视频上绘制内容。在我看来,最好的方法是处理WM_PIANT事件。
我的目的是让玩家先画画,然后画出画面。这样我就可以在视频上画画了。 这意味着我希望每次在我们需要在窗口上绘制一个新帧然后处理事件之前得到通知。
我使用DirectshowNet所以我用C#编程(我的所有接口都是c ++的API 具有)。据我所知,图表管理器会将某些窗口消息转发给视频渲染器,例如WM_PAINT。
如何让玩家在应用程序之前绘制框架而不是之后?
答案 0 :(得分:0)
WM_PAINT
不是最好的方式,而且这是错误的方式。
从DirectShow.NET库中查看DxText
示例。它的描述是:
示例应用程序,显示如何在文本字符串上叠加 数据流。从avi文件中读取流。
这与你想要达到的目标非常接近。另一种方法显示了另一种方法,BitmapMixer
:
BitmapMixer是一个如何使用视频绘制视频的示例 VMR9。
此示例主要围绕IVMRMixerBitmap9接口构建。 该接口接受位图作为GDI设备上下文或Direct3D 表面。 Direct3D Surface的主要优点是它 可以使用真正的alpha透明度。 GDI DC不支持 alpha位图和透明度是通过使用颜色键控来完成的。
此示例使用GDI +动态生成位图。