如何通过WPF编译H265视频流媒体播放器EasyPlayerPro上改变控件的位置?

WPF用户界面框架提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面,是我们在编译中也会用到的一种框架。对于EasyPlayerPro的播放我们也尝试了通过WPF执行,下面分享下我们WPF播放EasyPlayerPro控件改变位置的方式。

创建一个WPF程序,在使用EasyPlayPro中dll文件,传入一个窗口句柄,这样运行起来的画面如下图显示;但是有个问题:就是在WPF加入任何的控件都会隐藏在画面下面。完全设置不了顺序,导致画面窗口永远的置顶。

83.png

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、最后运行效果如下图(在图像上可以加任何控件):

84.png

猜你喜欢

转载自blog.csdn.net/TsingSee/article/details/114979377