2013-07-18 44 views
0

我有一个在屏幕上绘制线条的视频播放。是否有可能创建一个像素着色器(用于WPF),将N个毫秒的新颜色像素变为某种颜色?我可以在WPF中创建运动着色像素着色器吗?

这样一来,可以有一些指示,用户在屏幕上移动时,线不经常移动而用户并不总是看屏幕。

回答

0

您可以使用DirectShow。它写在非托管代码,所以你需要顺序是在托管环境中运行的C#应用​​程序使用它来使用此包装DirectShow.NET(样本都包括在内,即使EVR它代表增强的视频渲染器,这意味着更佳的视频质量) 。当你将一个控制句柄传递给包装方法来设置视频输出时,你需要一个WinForms控件,因为只有它们可以得到你想要的控制句柄。这WinForms的控制,你可以在你的WPF应用程序使用提供了这样的情况WindowsFormsHost控制主机,然后当你需要在一个WPF应用程序使用一些的WinForms控制(S)。它的正义理论,所以我不知道它是否是你的最终解决方案。

顺便说一句:整个想法是基于事实的,DirectShow只是一些从分离的过滤器构造的查询。渲染器是一个过滤器(EVR,VMR-7,VMR-9)。声音播放器是一个过滤器。他们通过他们的引脚连接。它就像一个图。电子架构或类似的东西。你可以在那里放置例如Grey scale过滤器。瞧,视频输出将是灰度。这里有一些教程。并完成简单的过滤器。不幸的是,过滤器必须用C++编写:(

PS:我从来没有说过它会是容易的:d

+0

雅,我希望得到周围使用直接显示要做到这一点,但我想这是我唯一的选择 –

+0

根据[this](http://comments.gmane.org/gmane.comp.video.videolan.vlc.devel/74444),似乎在VLC媒体播放器中他们添加了着色器支持。[There](http ://sourceforge.net/projects/libvlcnet/)你可以找到VLClib的C#包装器,它可以让你使用甚至是着色器,它比DirectShow更好,因为它非常易于使用和理解,所以我建议你尝试一下vlclib第一。 – Steven

+0

也许我找到了另一个解决方案,绝对简单的解决方案,你可以找到[这里](http://social.msdn.microsoft.com/Forums/vstudio/en-US/ 31e6fe44-332d-4212-bcdd-552c3178de5c/WPF的媒体播放器级和 - pixelshader)。 [这](http://sourceforge.net/projects/mfnet/files/)来作为一个除了我以前的评论。 – Steven