WPF用户界面框架提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面,是我们在编译中也会用到的一种框架。对于EasyPlayerPro的播放我们也尝试了通过WPF执行,下面分享下我们WPF播放EasyPlayerPro控件改变位置的方式。
创建一个WPF程序,在使用EasyPlayPro中dll文件,传入一个窗口句柄,这样运行起来的画面如下图显示;但是有个问题:就是在WPF加入任何的控件都会隐藏在画面下面。完全设置不了顺序,导致画面窗口永远的置顶。
WPF的原生控件并不具备自身的句柄,即使使用偏门的方式获取控件所在的窗口句柄,也并不代表该控件本身的资源属性,这个主要是由WPF自身的机制所决定得。因此需要了解winform与WPF的区别,WPF和winform最大的区别在于WPF使用的是DirectX,而windform使用的是GDI+。
当我们直接使用WPF的控件句柄为OSG等第三方控件的绘制视图区域时,我们就会发现视图区域占用整个窗体,无法在上面添加任何控件(不是控件没添加上)。这个与上面提到的WPF的原生控件并不具备自身句柄相一致。
为了解决此问题,我们需要使用WPF第三方:
1、使用Microsoft.DwayneNeed第三方
2、用VS打开Microsoft.DwayneNeed.sln解决方案,完成编译
3、在WPF项目中添加Microsoft.DwayneNeed.dll引用
4、在xmal中添加代码
Window节点添加:
xmlns:airspace="clr-namespace:Microsoft.DwayneNeed.Interop;assembly=Microsoft.DwayneNeed"
在xmal添加AirspaceDecorator:
<airspace:AirspaceDecorator AirspaceMode="Redirect" Name="AirspaceDecorator" IsInputRedirectionEnabled="True" IsOutputRedirectionEnabled="True" Margin="37,0,36,182">
<Image x:Name="image2" Stretch="Fill" Margin="40,214,0,0" />
</airspace:AirspaceDecorator>
5、最后运行效果如下图(在图像上可以加任何控件):
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。