0

我正在尝试在实时视频上画一些东西。在我看来,最好的方法是处理 WM_PIANT 事件。

我的目的是让玩家先绘制,然后再绘制应用程序。这样我就可以在视频上画画了。这意味着我希望每次在我们需要在窗口上绘制新框架然后处理事件之前都得到通知。

我使用 DirectshowNet,所以我使用 C# 编程(我拥有 c++ API 的所有接口)。我了解图形管理器将某些窗口消息转发给视频渲染器,例如 WM_PAINT。

如何使播放器在应用程序之前而不是之后绘制框架?

4

1 回答 1

0

WM_PAINT不是最好的方法,而且是错误的方法。

查看DxTextDirectShow.NET 库中的示例。它的描述是:

一个示例应用程序,展示了如何在数据流上叠加文本字符串。流是从 avi 文件中读取的。

这与您想要达到的目标非常接近。另一种方法显示在另一个示例中BitmapMixer

BitmapMixer 是如何使用 VMR9 在视频上绘制内容的示例。

本示例主要围绕 IVMRMixerBitmap9 接口构建。此接口接受位图作为 GDI 设备上下文或 Direct3D 表面。Direct3D Surface 的主要优点是它可以使用真正的 Alpha 透明度。GDI DC 不支持 alpha 位图,透明度是通过使用颜色键控来实现的。

此示例使用 GDI+ 动态生成位图。

于 2012-10-01T11:17:12.550 回答