我正在将网络摄像头集成到WPF应用程序中。当我将其HANDLE传递给DirectShow函数时,我可以在主窗口中看到摄像头。但这不是我想要的。
主窗体有一个Image控件,我想看看输出。但是,为了做到这一点,我需要控件的Handle。
有关如何执行此操作的任何提示?
提前致谢, 詹卢卡。
答案 0 :(得分:6)
与Windows窗体不同,WPF中的Image Control实际上没有HWND。
WPF的工作方式与Windows窗体不同 - 每个控件都不是带有句柄的本机“窗口”的包装器,而是由布局系统在运行时使用Direct3D组合在一起。
如果您需要在WPF窗口内实际托管来自Webcam的输出,您应该查看使用HwndHost(或子类)。最简单的方法通常只是在WindowsFormsHost内托管Windows窗体控件,尽管通过HwndHost
自己管理HWND效率更高。
答案 1 :(得分:0)
使用WindowsFormsHost和里面的图片框是一个很好的解决方案,我用于类似的问题,我需要一个句柄来显示视频流。但要小心,为了工作,托管WindowsFormsHost控件的Window必须具有AllowTransparency =“false”!