2013-07-18 74 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