我有一个正在屏幕上绘制线条的视频播放。是否可以创建一个像素着色器(用于 WPF),在 N 毫秒内将新着色的像素变成某种颜色?
这样,当线条不经常移动并且用户并不总是注视屏幕时,可以向用户指示在屏幕上移动。
我有一个正在屏幕上绘制线条的视频播放。是否可以创建一个像素着色器(用于 WPF),在 N 毫秒内将新着色的像素变成某种颜色?
这样,当线条不经常移动并且用户并不总是注视屏幕时,可以向用户指示在屏幕上移动。
您可以使用DirectShow
. 它是用非托管代码编写的,因此您需要使用此包装器DirectShow.NET才能在托管环境中运行的 C# 应用程序中使用它(包括示例,即使使用代表增强型视频渲染器的 EVR,这意味着更好的视频质量)。当您将控制句柄传递给用于设置视频输出的包装方法时,您需要一个 WinForms 控件,因为只有从它们您才能获得所需的控制句柄。WindowsFormsHost
然后,当您需要在 WPF 应用程序中使用某些 WinForms 控件时,您可以使用为此类情况提供的控件在您的 WPF 应用程序中托管该WinForms 控件。它只是理论,所以我不知道它是否适合您。
顺便说一句:整个想法是基于事实的,这DirectShow
只是一些由分离的过滤器构成的查询。渲染器是一个过滤器(EVR、VMR-7、VMR-9)。声音播放器是一个过滤器。它们通过引脚连接。它就像一个图表。电子模式或类似的东西。您可以在其中放置例如Grey scale
过滤器。瞧,视频输出将是灰度的。有很多教程。并完成了简单的过滤器。不幸的是,过滤器必须用 C++ 编写:(
PS:我从来没有说过这会很容易:D