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

  • 相关阅读:
    UGO小组冲刺第一天
    day04_07-三个函数的区别
    day06_08 字符串
    day06_07 字典操作02
    day06_06 字典操作01
    day06_05 字典
    day06_04 购物车讲解02
    day06_03 购物车讲解01
    day06_02 元组
    day06_01 上节回顾
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14593365.html
Copyright © 2020-2023  润新知