zoukankan      html  css  js  c++  java
  • 如何通过WPF编译H265视频流媒体播放器EasyPlayerPro上改变控件的位置?

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

  • 相关阅读:
    小程序接入第三方ui库(组件库)
    vue仿微信网页版|vue+web端聊天室|仿微信客户端vue版
    Java 开发环境配置
    那么多 Java 版本,如何选择合适的版本
    你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
    JavaScript HTML DOM EventListener addEventListener() 方法
    Vue2.0史上最全入坑教程(上)—— 搭建Vue脚手架(vue-cli)
    使用 Fetch
    CSS3中steps()动画的详解
    MYSQL常用命令
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14593365.html
Copyright © 2011-2022 走看看