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