我在wpf中使用的是aforge:videosourceplayer,麻烦的是:为了在wpf中使用aforge:VideoSourcePlayer,我们必须将它放在WindowsFormsHost标签中。如果我不想使用WindowsFormsHost,还有其他选择吗?
<WindowsFormsHost Margin="5,5,5,201" Name="windowFormsHost" Panel.ZIndex="0">
<aforge:VideoSourcePlayer x:Name="videoSourcePlayer" Height="200" Margin="12,30,0,0" Width="360">
</aforge:VideoSourcePlayer>
感谢您的帮助,谢谢。
发布于 2012-09-28 10:28:44
不幸的是没有,因为WinForms元素的绘制方式与WPF Elemenets不同,因此必须放在单独的hWND中(参见下面的链接)。
您没有要求它,但我相信您正在寻找替代方案,因为您在WPF窗口中使用WinForms时遇到了。
如果你使用的是WPF 4或更早的版本,你在上面的代码中分配的ZIndex属性将被忽略;-),在.NET窗口中的WinForm元素将总是绘制在所有其他元素的顶部(你可以在这里了解更多信息:Layout Considerations for the WindowsFormsHost Element)。
这就是为什么我们最终开发了自己的播放器,尝试和布局WinForm元素是非常令人不安的(我们需要滚动功能,但找不到一种简单的方法来让WinFormEl。部分消失,在VideoSourcePlayer上没有任何丑陋的调整)。
如果你使用.NET 4.5,你可以对ZIndex (和其他布局属性)有更多的控制,因为你可以阅读here (这是与上面相同的文章,只是针对.NET 4.5)
注意:我记得读过一篇博客文章,里面说isRedirected&CompositionMode属性(你需要这些属性能够在WPF中正确布局你的WinForms,正如上面的链接所说的),在4.5版本中排除了这些属性,但是找不到任何关于这个的官方声明(最安全的方法是尝试一下:-)。
发布于 2013-01-30 15:46:16
我遇到了完全相同的问题;您喜欢Aforge框架,但不喜欢WindowsFormsHost。最终在这里找到了解决方案;
Sagar Mohite克服了这个问题,简单地创建了一个Compatability.dll,允许您将位图转换为正确的格式,以便它们可以在图像元素中表示,而不是VideoSourcePlayers。也需要一个DispatcherObject,但所需的少量代码都在链接+下载动态链接库,您可以开始在您的Aforge Video feeds上覆盖WPF控件!
https://stackoverflow.com/questions/12616881
复制相似问题