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