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