WPF中播放Flash的宿主容器及方法与流程

文档序号:12664633阅读:827来源:国知局
WPF中播放Flash的宿主容器及方法与流程

本发明涉及Flash播放领域,具体是涉及一种WPF中播放Flash的宿主容器及方法。



背景技术:

WPF(Windows Presentation Foundation,Windows呈现基础)是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D图形、文档和媒体提供了统一的描述和操作方法。基于DirectX技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面。DirectX:Direct eXtension,简称DX,是由微软公司创建的多媒体编程接口。

Flash动画的播放广泛采用的是官方提供的基于GDI+(Graphics Device Interface,图形设备接口)的播放器。当在基于DirectX的WPF承载基于GDI+的Flash时,基于DirectX渲染的图形界面元素与基于GDI+渲染的图形界面元素在同一个窗体中层叠呈现。同一个视觉区域采用两种渲染技术,会产生空域(airspace)问题,即Flash在WPF中播放导致的布局限制:Flash播放器窗体(即Win32窗体)遮盖住WPF窗体。WPF中对Flash播放的支持并不友好,只提供了基于GDI+的Win32组件,通过WPF的控件宿主容器(Windows Forms Host)承载实现,播放时窗体始终会呈现在WPF窗体的上方,置顶显示,对其他控件产生遮盖。



技术实现要素:

本发明的目的是为了克服上述背景技术的不足,提供一种WPF中播放Flash的宿主容器及方法,播放Flash时不会遮盖其他控件。

本发明提供一种WPF中播放Flash的宿主容器,该宿主容器位于WPF窗体中,WPF窗体通过宿主容器承载Flash动画,宿主容器构建基于图形设备接口GDI+的Win32窗体,给Win32窗体设置10%~15%的透明度,视觉上不会遮盖其他控件;Win32窗体加载ActiveX控件播放Flash;宿主容器定期从Win32窗体按帧截图,在宿主容器中渲染截取的图片,形成动画播放效果。

在上述技术方案的基础上,所述宿主容器还通过显示和隐藏Win32窗体来实现交互:Flash播放时,当鼠标不在Flash播放区域内时,宿主容器给Win32窗体设置0%的透明度,Win32窗体完全透明,支持WPF层叠布局;当鼠标移入Flash播放区域内时,宿主容器给Win32窗体设置10%~15%的透明度,Win32窗体支持捕获交互操作的输入事件,实现用户与Win32窗体中播放的Flash的交互,并通过截图将交互效果呈现在WPF控件上。

在上述技术方案的基础上,所述交互操作包括键盘操作、鼠标操作、手写笔操作、手势操作。

在上述技术方案的基础上,所述宿主容器在Win32窗体和全屏窗体之间切换显示ActiveX控件,实现Flash播放无中断全屏切换。

在上述技术方案的基础上,所述全屏窗体为宿主容器的父窗体、承载体或者全新的WPF窗体。

本发明还提供一种基于上述宿主容器的WPF中播放Flash的方法,包括以下步骤:

在WPF界面的可扩展应用程序标记语言XAML代码中添加宿主容器;该宿主容器位于WPF窗体中,WPF窗体通过宿主容器承载Flash动画,宿主容器构建基于图形设备接口GDI+的Win32窗体,给Win32窗体设置10%~15%的透明度,视觉上不会遮盖其他控件;Win32窗体加载ActiveX控件播放Flash;宿主容器定期从Win32窗体按帧截图,在宿主容器中渲染截取的图片,形成动画播放效果。

在上述技术方案的基础上,该方法还包括以下步骤:所述宿主容器通过显示和隐藏Win32窗体来实现交互:Flash播放时,当鼠标不在Flash播放区域内时,宿主容器给Win32窗体设置0%的透明度,Win32窗体完全透明,支持WPF层叠布局;当鼠标移入Flash播放区域内时,宿主容器给Win32窗体设置10%~15%的透明度,Win32窗体支持捕获交互操作的输入事件,实现用户与Win32窗体中播放的Flash的交互,并通过截图将交互效果呈现在WPF控件上。

在上述技术方案的基础上,所述交互操作包括键盘操作、鼠标操作、手写笔操作、手势操作。

在上述技术方案的基础上,该方法还包括以下步骤:所述宿主容器在Win32窗体和全屏窗体之间切换显示ActiveX控件,实现Flash播放无中断全屏切换。

在上述技术方案的基础上,所述全屏窗体为宿主容器的父窗体、承载体或者全新的WPF窗体。

与现有技术相比,本发明的优点如下:

(1)本发明中的宿主容器位于WPF窗体中,WPF窗体通过宿主容器承载Flash动画,宿主容器构建基于GDI+(Graphics Device Interface,图形设备接口)的Win32窗体,给Win32窗体设置10%~15%的透明度,视觉上不会遮盖其他控件;Win32窗体加载ActiveX控件播放Flash;宿主容器定期从Win32窗体按帧截图,在宿主容器中渲染截取的图片,形成动画播放效果。由于宿主容器给Win32窗体设置10%~15%的透明度,视觉上不会遮盖其他控件,也不会阻挡键盘操作、鼠标操作、手写笔操作、手势操作等交互操作的输入事件。因此,Flash播放时不会遮盖其他控件,对用到Flash播放的模块,控件布局不再受局限,通过扩展,可以应用到WPF支持不完善而Win32有较好处理方案的情况下,例如网页浏览器、视频播放器等。

(2)本发明中的宿主容器通过显示和隐藏Win32窗体来实现交互:Flash播放时,当鼠标不在Flash播放区域内时,宿主容器给Win32窗体设置0%的透明度,Win32窗体完全透明,支持WPF层叠布局;当鼠标移入Flash播放区域内时,宿主容器给Win32窗体设置10%~15%的透明度,Win32窗体支持捕获交互操作的输入事件,实现用户与Win32窗体中播放的Flash的交互,并通过截图将交互效果呈现在WPF控件上。

(3)本发明中的宿主容器在Win32窗体和全屏窗体之间切换显示ActiveX控件,能够实现Flash播放无中断全屏切换。

(4)本发明在Win32窗体中显示的是Flash播放时的截图,是图片操作,因此不会对WPF的图形元素产生遮盖,不影响布局,承载Flash的控件不再与主窗体的样式发生冲突。

附图说明

图1是本发明实施例中宿主容器运行的流程图。

图2是本发明实施例中Flash交互的流程图。

图3是本发明实施例中实现Flash播放无中断全屏切换的流程图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

本发明实施例提供一种WPF中播放Flash的宿主容器,该宿主容器位于WPF窗体中,参见图1所示,WPF窗体通过宿主容器承载Flash动画,宿主容器构建基于图形设备接口GDI+(Graphics Device Interface,图形设备接口)的Win32窗体,给Win32窗体设置10%~15%的透明度,视觉上不会遮盖其他控件;Win32窗体加载ActiveX控件播放Flash;宿主容器定期从Win32窗体按帧截图,在宿主容器中渲染截取的图片,形成动画播放效果。由于宿主容器给Win32窗体设置10%~15%的透明度,视觉上不会遮盖其他控件,也不会阻挡交互操作的输入事件,交互操作包括键盘操作、鼠标操作、手写笔操作、手势操作。

本发明实施例还提供一种基于上述宿主容器的WPF中播放Flash的方法,包括以下步骤:

在WPF界面的XAML(eXtensible Application Markup Language,可扩展应用程序标记语言)代码中添加宿主容器;该宿主容器位于WPF窗体中,参见图1所示,WPF窗体通过宿主容器承载Flash动画,宿主容器构建基于图形设备接口GDI+的Win32窗体,给Win32窗体设置10%~15%的透明度,视觉上不会遮盖其他控件;Win32窗体加载ActiveX控件播放Flash;宿主容器定期从Win32窗体按帧截图,在宿主容器中渲染截取的图片,形成动画播放效果。

参见图2所示,宿主容器还通过显示和隐藏Win32窗体来实现交互:Flash播放时,当鼠标不在Flash播放区域内时,宿主容器给Win32窗体设置0%的透明度,Win32窗体完全透明,支持WPF层叠布局;当鼠标移入Flash播放区域内时,宿主容器给Win32窗体设置10%~15%的透明度,Win32窗体支持捕获交互操作的输入事件,实现用户与Win32窗体中播放的Flash的交互,并通过截图将交互效果呈现在WPF控件上。

宿主容器还通过在Win32窗体和全屏窗体之间切换显示ActiveX控件,来实现Flash播放无中断全屏切换。以前不能交互的原因是:以前在WPF窗体中显示的是图片。本发明实施例是在Win32窗体和全屏窗体之间切换显示ActiveX控件。

参见图3所示,需要全屏显示时,宿主容器打开全屏窗体,将播放Flash的ActiveX控件从隐藏窗体中剥离,在全屏窗体中添加播放Flash的ActiveX控件进行播放,以不中断播放的方式实现全屏切换。全屏窗体为宿主容器的父窗体、承载体或者全新的WPF窗体。

本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。

说明书中未详细描述的内容为本领域技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1