CN105302569A - 一种用于生成异形窗口的方法和装置 - Google Patents

一种用于生成异形窗口的方法和装置 Download PDF

Info

Publication number
CN105302569A
CN105302569A CN201510794726.1A CN201510794726A CN105302569A CN 105302569 A CN105302569 A CN 105302569A CN 201510794726 A CN201510794726 A CN 201510794726A CN 105302569 A CN105302569 A CN 105302569A
Authority
CN
China
Prior art keywords
data
window
special
bitmap
browser
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510794726.1A
Other languages
English (en)
Other versions
CN105302569B (zh
Inventor
严跃杰
顾平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201510794726.1A priority Critical patent/CN105302569B/zh
Publication of CN105302569A publication Critical patent/CN105302569A/zh
Application granted granted Critical
Publication of CN105302569B publication Critical patent/CN105302569B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • User Interface Of Digital Computer (AREA)

Abstract

本发明的实施方式提供了一种用于生成异形窗口的方法和装置。所述方法包括:封装并初始化Chromium嵌入式框架;创建初始窗口;由所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器;通过由所述离屏渲染浏览器加载页面内容数据生成位图数据;将所述位图数据转换为内存位图,以及基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。

Description

一种用于生成异形窗口的方法和装置
技术领域
本发明的实施方式涉及计算机领域,更具体地,本发明的实施方式涉及用于生成异形窗口的方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
目前所使用的电子设备的操作系统上通常都安装有异形窗口应用,其可以由用户自定义窗口的形状、颜色、透明度等属性,例如媒体播放器,时钟,杀毒软件图标等。这种异形窗口应用通常基于分层窗口(Layeredwindows)技术来创建异形窗口。分层窗口技术的主要特点包括:允许窗口像素点的alpha值与屏幕像素点alpha值混合,其中alpha值是表示位图中像素不透明度的参数;窗口像素点alpha值为0(全透明)时,鼠标可以穿越当前窗口被下一层窗口捕获。根据对异形窗口外观的具体需求,可以分别采用分层窗口技术中的两个API:SetLayeredWindowAttributes和UpdateLayeredWindow来创建异形窗口。
SetLayeredWindowAttributes适合创建外观比较简单、无渐变效果的异形窗口,其存在以下缺点:当需要产生不规则形状的异形窗口时,必须有一种颜色用于识别色(表示在异形窗口中该颜色所在区域变更为全透明),因而异形窗口色彩表现受到限制;异形窗口像素点最多只能有三个alpha值,无法实现透明度渐变效果(比如阴影),导致异形窗口的表现形式受限;当需要输出形状极其复杂的窗口时(比如直接输出文字),边缘锯齿残留非常明显,表现效果差。
UpdateLayeredWindow适用于创建外观复杂的异形窗口,该方案可以将位图直接输出到屏幕来获得异形窗口,通常位图可以通过以下两种方式来获取:
第一,如果该异形窗口应用的外观只有固定的一种或几种(比如媒体播放器、杀毒软件图标等),可以通过在创建异形窗口前通过绘图工具(如photoshop等)绘制来获取位图,异形窗口应用运行时直接加载或者响应于用户的操作请求加载所获取的位图。然而这种方式有以下缺点:所获取的位图数量有限,交互形式单一,只适合于界面较为单一、对视觉和交互要求不高的桌面应用,比如上面提到的传统的播放器面板,杀毒软件图标等;无法根据实时数据生成位图,比如曲线图、柱状图、饼图等统计类型图片;窗口外观一般只能由本地程序控制,不方便维护和程序开发,灵活性较低。
第二,如果该异形窗口应用的外观跟实时数据相关(比如电子时钟、股票实时走势、天气预报等),或者该异形窗口应用的外观需要响应于用户的操作请求而相应地变化,则可以在应用运行时通过GDI(GraphicsDeviceInterface)、GDI+或Direct3D等图形绘制接口绘制来获取位图。然而,这种获取位图的方式也存在较多缺点:绘制过程非常复杂,成本高;程序绘图模型在应用生成后无法新增或者变更,除非升级该应用;缺乏成熟的开源的数据可视化解决方案,开发和维护的技术难度较大;窗口外观一般只能由本地程序控制,不方便维护和程序开发,灵活性较低。
发明内容
现有技术中的生成异形窗口的技术中,如果需要根据实时数据来生成异形窗口且使异形窗口的外观能够响应于用户的操作请求而相应地变化,则仅能够通过复杂的绘制过程来获取位图数据,开发和维护的成本较高;用于获取位图数据的程序绘图模型在应用生成后无法新增或者变更,除非升级该应用;缺乏成熟的开源的数据可视化解决方案,开发和维护的技术难度大;异形窗口外观一般只能由本地程序控制,不方便维护和程序开发,灵活性较低。
因此在现有技术中,用于生成异形窗口的方法和装置用户体验不佳,计算过程复杂、难度大、成本高、灵活性低,这是非常令人烦恼的过程。
为此,非常需要一种改进的用于生成异形窗口的方法和装置,以便丰富异形窗口应用的外观和交互形态,可以将异形窗口应用的外观数据部署在远端服务器上以提高程序开发、维护的灵活性,并且显著提高异形窗口应用的开发、维护的效率并显著降低开发、维护难度和成本。
在本上下文中,本发明的实施方式期望提供一种用于生成异形窗口的方法和装置。
在本发明实施方式的第一方面中,提供了一种用于生成异形窗口的方法,包括:封装并初始化Chromium嵌入式框架;创建初始窗口;由所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器;通过由所述离屏渲染浏览器加载页面内容数据生成位图数据;将所述位图数据转换为内存位图;基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
在本发明实施方式的第二方面中,提供了一种用于生成异形窗口的装置,包括:封装模块,被配置为封装并初始化Chromium嵌入式框架;初始窗口创建模块,被配置为创建初始窗口;离屏渲染浏览器创建模块,被配置为通过所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器;位图数据生成模块,被配置为通过由所述离屏渲染浏览器加载页面内容数据生成位图数据;转换模块,被配置为将所述位图数据转换为内存位图;异形窗口生成模块,被配置为基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
根据本发明实施方式的用于生成异形窗口的方法和装置,能够丰富异形窗口应用的外观和交互形态;能够根据基于实时数据的页面内容来生成位图数据,并可根据需要生成任意数量的位图;可以将异形窗口应用的外观数据部署在远端服务器上以提高程序开发、维护的灵活性;优化了生成异形窗口的过程,显著减少了数据转换的时间且提高了转换效率,减少了CPU的使用率,节约了处理器的资源,并改善了异形窗口应用的性能;并且显著提高异形窗口应用的开发、维护的效率并显著降低开发、维护难度和成本。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1A和1B示意性地示出了根据本发明实施方式的应用场景;
图2示意性地示出了根据本发明实施方式的用于生成异形窗口方法的流程示意图;
图3示意性地示出了根据本发明另一个实施方式的用于生成异形窗口方法的流程示意图;
图4示意性地示出了根据本发明实施方式的用于生成异形窗口装置的示意图;
图5示意性地示出了根据本发明另一实施方式的用于生成异形窗口装置的示意图;以及
图6示意性地示出了根据本发明另一实施方式的用于生成异形窗口的程序产品。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种用于生成异形窗口的方法和装置。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,在创建异形窗口时,可以通过Chromium嵌入式框架基于所创建的初始窗口创建离屏渲染浏览器,通过由离屏渲染浏览器来加载页面内容数据来生成位图数据,将位图数据转换为内存位图,并基于内存位图通过UpdateLayeredWindow生成并输出异形窗口。此外,还提供了接收在异形窗口中的操作事件的接口,可以将所捕获的操作事件通过Chromium嵌入式框架通知离屏渲染浏览器,来更新位图数据,以触发异形窗口页面响应于操作事件而相应地变化。这样,丰富了异形窗口应用的外观和交互形态,可以将异形窗口应用的外观数据部署在远端服务器上以提高程序开发、维护的灵活性,并且显著提高异形窗口应用的开发、维护的效率,并显著降低开发、维护难度和成本。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1A和1B,为根据本发明的示例性实施方式的一种异形窗口的示意图。如图1A和图1B所示,异形窗口可以是桌面卡拉OK歌词窗口,可以随着音乐的播放相应地显示歌词,异形窗口可以具有不规则的形状(例如歌词的文字形状),文字边缘可以有阴影,且文字可以有逐步推进的动画效果(例如可以通过变换窗口中文字的颜色、透明度或灰度来表示音乐或歌词的播放进度)。如图1B所示,当将鼠标移动到异形窗口上时,该鼠标的操作事件可以被捕获,并且通过Chromium嵌入式框架通知离屏渲染浏览器,来更新位图数据并转换为内存位图,以触发异形窗口页面响应于操作事件而相应地变化,即出现半透明窗口背景及按钮(例如放大、缩小、锁定和关闭),且边缘有渐变阴影。
本领域技术人员可以理解,图1A和1B所示的示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的适用范围不受任何限制。
示例性方法
下面结合图1A和1B的应用场景,参考图2来描述根据本发明示例性实施方式的用于生成异形窗口的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图2示意性地示出了根据本发明实施方式的用于生成异形窗口的方法200的流程示意图。如图2所示,该方法200可以包括:
S201、封装并初始化Chromium嵌入式框架。
在一些可能的实施方式中,本发明实施例的异形窗口可以是由用户自定义窗口的形状、颜色、透明度等属性的窗口。在一些可能的实施方式中,本发明实施例的异形窗口应用可以是具有异形窗口的任何应用,例如,媒体播放器、时钟、杀毒软件图标等。
在一些可能的实施方式中,本发明实施例的Chromium嵌入式框架可以是基于Chromiumcontentapi开发的嵌入式浏览器框架,也可以是其他任何浏览器嵌入式框架。因Chromium嵌入式框架支持html5,因此,具有丰富的数据可视化方案(如Flotr、chartjs等),显著增强了生成异形窗口的开发和维护过程的可视化,大大降低了应用程序开发和维护的技术难度。
S202、创建初始窗口。
在一些可能的实施方式中,所述初始窗口是分层窗口。在一些可能的实施方式中,分层窗口可以是在Windows下能够自动地与非活动窗口进行合成的一种窗口,其允许窗口像素点的alpha值与屏幕像素点alpha值混合;窗口像素点alpha值为0(全透明)时,鼠标可以穿越当前窗口被下一层窗口捕获。
在一些可能的实施方式中,如图3所示,通过调用OsrBrowser::Create,创建初始窗口(例如,分层窗口(LayeredWindow))的实例,以及可选地创建OsrClientHandler的实例。
S203、由所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器。
在一些可能的实施方式中,由所述Chromium嵌入式框架基于所创建的初始窗口,以及可选地OsrClientHandler的实例,通过调用CefBrowserHost::CreateBrowser(CefBrowserHost::CreateBrowserSync),创建离屏渲染浏览器。
S204、通过由所述离屏渲染浏览器加载页面内容数据生成位图数据。在一些可能的实施方式中,通过由离屏渲染浏览器加载页面内容生成位图数据,比如生成数据曲线图、柱状图、饼图等,能够根据基于实时数据的页面内容来生成位图数据,并可根据需要生成任意数量的位图。
在一些可能的实施方式中,页面内容数据可以包括html/css/js数据,由于html/css/js数据自身的属性,其可以根据用户的不同操作来生成位图,使得所生成的异形窗口交互形式更加丰富。
在一些可能的实施方式中,如图3所示,通过离屏渲染浏览器加载包括html/css/js数据的页面内容数据,回调CefRenderHanlder::OnPaint接口,来输出位图数据。
在一些可能的实施方式中,步骤S204可包括:通过由所述离屏渲染浏览器加载来自服务器和/或本地的页面内容数据,生成位图数据。在一些可能的实施方式中,页面内容数据,包括html/css/js数据,既可以存放在本地,也可以放到远端服务器上,所述离屏渲染浏览器可以加载来自服务器和/或本地的页面内容数据,生成位图数据。这样,用于生成异形窗口的数据既可以由本地程序控制,也可以通过服务器远程控制,例如,可以将html/css/js数据部署到http服务器,采用典型BS(BrowserServer)架构,完全由http服务器端控制本地异形窗口应用的外观(包括形状、颜色、透明度等),通过由所述离屏渲染浏览器加载来自服务器和/或本地的页面内容数据,生成位图数据,这样,方便维护和程序开发,显著增加了操作的灵活性。
S205、将所述位图数据转换为内存位图。
在一些可能的实施方式中,所述内存位图可以是UpdateLayeredWindow可以接受的内存位图。
在一些可能的实施方式中,如图3所示,OsrClientHandler重载OnPaint,调用OsrBitmap::GetHBITMAP将位图数据转换为内存位图。
在一些可能的实施方式中,步骤S205可包括:采用CreateDIBSection函数,将所述位图数据转换为内存位图。可选地,也可以采用其他方式将所述位图数据转换为内存位图,例如采用CreateBitmapIndirect函数。
在异形窗口中包括频繁刷新的内容(例如动画)的情况下,如图1A和1B中所示的卡拉OK渐进歌词动画,当由离屏渲染浏览器加载包括html/css/js数据的页面内容数据来成生成位图数据时,窗口页面的高刷新频率会在短时间内产生大量的位图数据,随后,需要将这些大量的位图数据转换为内存位图,计算量非常大,可能导致异形窗口中外观有动画效果的异形窗口应用的性能受到严重的影响。
根据本发明的示例性实施方式,采用CreateDIBSection函数将所述位图数据转换为内存位图,能够显著优化创建异形窗口的过程。表1示出了采用不同的位图数据的转换方法,所获得的应用性能差别数据。根据表1中的数据可知,本发明的示例性实施例,采用CreateDIBSection函数进行位图数据的转换,优化了生成异形窗口的过程,显著减少了数据转换的时间且提高了转换效率,减少了CPU的使用率,节约了处理器的资源,并改善了异形窗口应用的性能。
表1.
S206、基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
在一些可能的实施方式中,如图3所示,调用LayeredWindow实例,通过UpdateLayeredWindow生成并输出异形窗口,如图1A和1B中所示的异形窗口。
在一些可能的实施方式中,方法200还包括:捕获在所述异形窗口中的操作事件;将所述操作事件通过所述Chromium嵌入式框架通知所述离屏渲染浏览器;响应于所述操作事件,所述离屏渲染浏览器更新所述位图数据。在一些可能的实施方式中,当在异形窗口中存在操作事件时,例如图1B所示的对鼠标或键盘的操作事件,则LayeredWindows通过注册的WndProc回调函数捕获该操作事件,并通过Chromium嵌入式框架采用CefBrowserHost实例的SendMouseClickEvent或SendKeyEvent等方法将该操作事件通知离屏渲染浏览器,通过回调CefRenderHanlder::OnPaint接口由该离屏渲染浏览器对该操作事件进行响应后更新位图数据。可选地,如上所述,重复步骤S205和S206,将更新的位图数据转换为更新的内存位图,并基于该更新的内存位图,通过UpdateLayeredWindow生成并输出更新的异形窗口。通过这种方式,显著丰富了异形窗口应用的外观和交互形态,如图1B所示,当将鼠标移动到异形窗口上时,该鼠标的移动操作事件可以被捕获,以触发异形窗口页面响应于操作事件而相应地变化,即出现半透明窗口背景及按钮(例如放大、缩小、锁定和关闭),且边缘有渐变阴影。
这样,根据本发明实施方式的用于生成异形窗口的方法,能够丰富异形窗口应用的外观和交互形态;能够根据基于实时数据的页面内容来生成位图数据,并可根据需要生成任意数量的位图;可以将异形窗口应用的外观数据部署在远端服务器上以提高程序开发、维护的灵活性;优化了生成异形窗口的过程,显著减少了数据转换的时间且提高了转换效率,减少了CPU的使用率,节约了处理器的资源,并改善了异形窗口应用的性能;并且显著提高异形窗口应用的开发、维护的效率并显著降低开发、维护难度和成本。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图4对本发明示例性实施方式的用于生成异形窗口的装置的示意图。
图4示意性地示出了根据本发明实施方式的用于生成异形窗口的装置400的示意图。如图4所示,该装置400可以包括:封装模块401、初始窗口创建模块402、离屏渲染浏览器创建模块403、位图数据生成模块404、转换模块405和异形窗口生成模块406。
封装模块401,被配置为封装并初始化Chromium嵌入式框架。
在一些可能的实施方式中,本发明实施例的异形窗口可以是由用户自定义窗口的形状、颜色、透明度等属性的窗口。在一些可能的实施方式中,本发明实施例的异形窗口应用可以是具有异形窗口的任何应用,例如,媒体播放器,时钟,杀毒软件图标等。
在一些可能的实施方式中,本发明实施例的Chromium嵌入式框架可以是基于Chromiumcontentapi开发的嵌入式浏览器框架,也可以是其他任何浏览器嵌入式框架。因Chromium嵌入式框架支持html5,因此,具有丰富的数据可视化方案(如Flotr、chartjs等),显著增强了生成异形窗口的开发和维护过程的可视化,大大降低了应用程序开发和维护的技术难度。
初始窗口创建模块402,被配置为创建初始窗口。
在一些可能的实施方式中,所述初始窗口是分层窗口。在一些可能的实施方式中,分层窗口可以是在Windows下能够自动地与非活动窗口进行合成的一种窗口,其允许窗口像素点的alpha值与屏幕像素点alpha值混合;窗口像素点alpha值为0(全透明)时,鼠标可以穿越当前窗口被下一层窗口捕获。
在一些可能的实施方式中,如图3所示,初始窗口创建模块402通过调用OsrBrowser::Create,创建初始窗口(例如,分层窗口(LayeredWindow))的实例,以及可选地创建OsrClientHandler的实例。
离屏渲染浏览器创建模块403,被配置为通过所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器。
在一些可能的实施方式中,离屏渲染浏览器创建模块403被配置为通过所述Chromium嵌入式框架基于所创建的初始窗口,以及可选地OsrClientHandler的实例,通过调用CefBrowserHost::CreateBrowser(CefBrowserHost::CreateBrowserSync),创建离屏渲染浏览器。
位图数据生成模块404,被配置为通过由所述离屏渲染浏览器加载页面内容数据生成位图数据。在一些可能的实施方式中,位图数据生成模块404通过由离屏渲染浏览器加载页面内容生成位图数据,比如生成数据曲线图、柱状图、饼图等,能够根据基于实时数据的页面内容来生成位图数据,并可根据需要生成任意数量的位图。
在一些可能的实施方式中,页面内容数据可以包括html/css/js数据,由于html/css/js数据自身的属性,其可以根据用户的不同操作来生成位图,使得所生成的异形窗口交互形式更加丰富。
在一些可能的实施方式中,如图3所示,位图数据生成模块404通过离屏渲染浏览器加载包括html/css/js数据的页面内容数据,回调CefRenderHanlder::OnPaint接口,来输出位图数据。
在一些可能的实施方式中,位图数据生成模块404被配置为:通过由所述离屏渲染浏览器加载来自服务器和/或本地的页面内容数据,生成位图数据。在一些可能的实施方式中,页面内容数据,包括html/css/js数据,既可以存放在本地,也可以放到远端服务器上,位图数据生成模块404可以通过离屏渲染浏览器加载来自服务器和/或本地的页面内容数据,生成位图数据。这样,用于生成异形窗口的数据既可以由本地程序控制,也可以通过服务器远程控制,例如,可以将html/css/js数据部署到http服务器,采用典型BS(BrowserServer)架构,完全由http服务器端控制本地应用的外观(包括形状、颜色、透明度等),位图数据生成模块404通过所述离屏渲染浏览器加载来自服务器和/或本地的页面内容数据,生成位图数据,这样,方便维护和程序开发,显著增加了操作的灵活性。
转换模块405,被配置为将所述位图数据转换为内存位图。
在一些可能的实施方式中,所述内存位图可以是UpdateLayeredWindow可以接受的内存位图。
在一些可能的实施方式中,如图3所示,转换模块405通过OsrClientHandler重载OnPaint,调用OsrBitmap::GetHBITMAP将位图数据转换为内存位图。
在一些可能的实施方式中,转换模块405被配置为:采用CreateDIBSection函数,将所述位图数据转换为内存位图。可选地,转换模块405也可以采用其他方式将所述位图数据转换为内存位图,例如采用CreateBitmapIndirect函数。
在异形窗口中包括频繁刷新的内容(例如动画)的情况下,如图1A和1B中所示的卡拉OK渐进歌词动画,当位图数据生成模块404通过离屏渲染浏览器加载包括html/css/js数据的页面内容数据来成生成位图数据时,窗口页面的高刷新频率会在短时间内产生大量的位图数据,随后,转换模块405需要将这些大量的位图数据转换为内存位图,计算量非常大,可能导致异形窗口中外观有动画效果的异形窗口应用的性能受到严重的影响。
根据本发明的示例性实施方式,转换模块405采用CreateDIBSection函数将所述位图数据转换为内存位图,能够显著优化创建异形窗口的过程。表1示出了采用不同位图数据的转换方法,所获得的应用性能差别数据。根据表1中的数据可知,本发明的示例性实施例,转换模块405采用CreateDIBSection函数进行位图数据的转换,优化了生成异形窗口的过程,显著减少了数据转换的时间且提高了转换效率,减少了CPU的使用率,节约了处理器的资源,并改善了异形窗口应用的性能。
异形窗口生成模块406,被配置为基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
在一些可能的实施方式中,如图3所示,异形窗口生成模块406调用LayeredWindow实例,通过UpdateLayeredWindow生成并输出异形窗口,如图1A和1B中所示的异形窗口。
在一些可能的实施方式中,装置400还包括:捕获模块407,被配置为捕获在所述异形窗口中的操作事件;通知模块408,被配置为将所述操作事件通过所述Chromium嵌入式框架通知所述离屏渲染浏览器;更新模块409,被配置为响应于所述操作事件,所述离屏渲染浏览器更新所述位图数据。在一些可能的实施方式中,当在异形窗口中存在操作事件时,例如图1B所示的对鼠标或键盘的操作事件,则捕获模块407采用LayeredWindows通过注册的WndProc回调函数捕获该操作事件,通知模块408通过Chromium嵌入式框架采用CefBrowserHost实例的SendMouseClickEvent或SendKeyEvent等方法将该操作事件通知离屏渲染浏览器,更新模块409通过回调CefRenderHanlder::OnPaint接口由该离屏渲染浏览器对该操作事件进行响应后更新位图数据。可选地,如上所述,转换模块405将更新的位图数据转换为更新的内存位图,并且异形窗口生成模块406基于该更新的内存位图,通过UpdateLayeredWindow生成并输出更新的异形窗口,从而显著丰富了异形窗口应用的外观和交互形态。如图1B所示,当将鼠标移动到异形窗口上时,该鼠标的移动操作事件可以被捕获模块407捕获,以触发异形窗口页面响应于操作事件而相应地变化,即出现半透明窗口背景及按钮(例如放大、缩小、锁定和关闭),且边缘有渐变阴影。
这样,根据本发明实施方式的用于生成异形窗口的装置,能够丰富异形窗口应用的外观和交互形态;能够根据基于实时数据的页面内容来生成位图数据,并可根据需要生成任意数量的位图;可以将异形窗口应用的外观数据部署在远端服务器上以提高程序开发、维护的灵活性;优化了生成异形窗口的过程,显著减少了数据转换的时间且提高了转换效率,减少了CPU的使用率,节约了处理器的资源,并改善了异形窗口应用的性能;并且显著提高异形窗口应用的开发、维护的效率并显著降低开发、维护难度和成本。
示例性设备
在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的用于生成异形窗口的装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的用于生成异形窗口的装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于生成异形窗口的方法中的步骤。例如,所述处理单元可以执行如图2中所示的步骤S201、封装并初始化Chromium嵌入式框架;S202、创建初始窗口;S203、由所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器;S204、通过由所述离屏渲染浏览器加载页面内容数据生成位图数据;S205、将所述位图数据转换为内存位图;以及S206、基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
下面参照图5来描述根据本发明的这种实施方式的用于生成异形窗口的装置10。图5显示的用于生成异形窗口的装置10仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,用于生成异形窗口的装置10以通用计算设备的形式表现。用于生成异形窗口的装置10的组件可以包括但不限于:上述至少一个处理单元16、上述至少一个存储单元28、连接不同系统组件(包括存储单元28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元28可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32,还可以进一步只读存储器(ROM)34。
存储单元28还可以包括具有一组(至少一个)程序模块42的程序/实用工具40,这样的程序模块42包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
用于生成异形窗口的装置10也可以与一个或多个外部设备14(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得联系人能与该用于生成异形窗口的装置10交互的设备通信,和/或与使得该用于生成异形窗口的装置10能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,用于生成异形窗口的装置10还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与用于生成异形窗口的装置10的其它模块通信。应当明白,尽管图中未示出,可以结合用于生成异形窗口的装置10使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在系统上运行时,所述程序代码用于使所述系统执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于生成异形窗口的方法中的步骤,例如,所述系统可以执行如图2中所示的步骤S201、封装并初始化Chromium嵌入式框架;S202、创建初始窗口;S203、由所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器;S204、通过由所述离屏渲染浏览器加载页面内容数据生成位图数据;S205、将所述位图数据转换为内存位图;以及S206、基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图6所示,描述了根据本发明的实施方式的用于生成异形窗口的程序产品90,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在联系人计算设备上执行、部分地在联系人设备上执行、作为一个独立的软件包执行、部分在联系人计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到联系人计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于即时通信应用的设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种用于生成异形窗口的方法,包括:
封装并初始化Chromium嵌入式框架;
创建初始窗口;
由所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器;
通过由所述离屏渲染浏览器加载页面内容数据生成位图数据;
将所述位图数据转换为内存位图;以及
基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
2.根据权利要求1所述的方法,还包括:
捕获在所述异形窗口中的操作事件;
将所述操作事件通过所述Chromium嵌入式框架通知所述离屏渲染浏览器;
响应于所述操作事件,所述离屏渲染浏览器更新所述位图数据。
3.根据权利要求1所述的方法,其中所述初始窗口是分层窗口。
4.根据权利要求1所述的方法,其中通过由所述离屏渲染浏览器加载页面内容数据生成位图数据包括:
通过由所述离屏渲染浏览器加载来自服务器和/或本地的页面内容数据,生成位图数据。
5.根据权利要求1所述的方法,其中将所述位图数据转换为内存位图包括:
采用CreateDIBSection函数,将所述位图数据转换为内存位图。
6.一种用于生成异形窗口的装置,包括:
封装模块,被配置为封装并初始化Chromium嵌入式框架;
初始窗口创建模块,被配置为创建初始窗口;
离屏渲染浏览器创建模块,被配置为通过所述Chromium嵌入式框架基于所述初始窗口创建离屏渲染浏览器;
位图数据生成模块,被配置为通过由所述离屏渲染浏览器加载页面内容数据生成位图数据;
转换模块,被配置为将所述位图数据转换为内存位图;以及
异形窗口生成模块,被配置为基于所述内存位图,通过UpdateLayeredWindow生成并输出异形窗口。
7.根据权利要求6所述的装置,还包括:
捕获模块,被配置为捕获在所述异形窗口中的操作事件;
通知模块,被配置为将所述操作事件通过所述Chromium嵌入式框架通知所述离屏渲染浏览器;
更新模块,被配置为响应于所述操作事件,所述离屏渲染浏览器更新所述位图数据。
8.根据权利要求6所述的装置,其中所述初始窗口是分层窗口。
9.根据权利要求6所述的装置,其中所述位图数据生成模块被配置为:
通过由所述离屏渲染浏览器加载来自服务器和/或本地的页面内容数据,生成位图数据。
10.根据权利要求6所述的装置,其中所述转换模块被配置为:
采用CreateDIBSection函数,将所述位图数据转换为内存位图。
CN201510794726.1A 2015-11-18 2015-11-18 一种用于生成异形窗口的方法和装置 Active CN105302569B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510794726.1A CN105302569B (zh) 2015-11-18 2015-11-18 一种用于生成异形窗口的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510794726.1A CN105302569B (zh) 2015-11-18 2015-11-18 一种用于生成异形窗口的方法和装置

Publications (2)

Publication Number Publication Date
CN105302569A true CN105302569A (zh) 2016-02-03
CN105302569B CN105302569B (zh) 2019-05-07

Family

ID=55199867

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510794726.1A Active CN105302569B (zh) 2015-11-18 2015-11-18 一种用于生成异形窗口的方法和装置

Country Status (1)

Country Link
CN (1) CN105302569B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168616A (zh) * 2017-06-08 2017-09-15 网易(杭州)网络有限公司 游戏交互界面显示方法、装置、电子设备及存储介质
CN107357576A (zh) * 2017-06-30 2017-11-17 惠州市德赛西威汽车电子股份有限公司 一种Windows应用程序多窗口并行绘图的方法及系统
CN110109724A (zh) * 2019-04-29 2019-08-09 珠海豹好玩科技有限公司 一种显示方法、装置、终端及存储介质
CN110187881A (zh) * 2019-06-04 2019-08-30 深圳市迅雷网络技术有限公司 一种异形窗口创建方法、系统、装置及计算机存储介质
CN111815657A (zh) * 2020-07-28 2020-10-23 安徽沃特水务科技有限公司 一种动态不规则元素边界切割显示方法
CN112035193A (zh) * 2020-07-27 2020-12-04 成都安易迅科技有限公司 应用程序的界面生成方法、装置、存储介质及计算机设备
CN115658216A (zh) * 2022-12-26 2023-01-31 飞腾信息技术有限公司 应用程序窗口的处理方法、设备及计算机可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104462231B (zh) * 2014-11-11 2018-12-04 北京奇安信科技有限公司 网页渲染的方法、装置及系统

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168616A (zh) * 2017-06-08 2017-09-15 网易(杭州)网络有限公司 游戏交互界面显示方法、装置、电子设备及存储介质
CN107168616B (zh) * 2017-06-08 2020-02-21 网易(杭州)网络有限公司 游戏交互界面显示方法、装置、电子设备及存储介质
CN107357576A (zh) * 2017-06-30 2017-11-17 惠州市德赛西威汽车电子股份有限公司 一种Windows应用程序多窗口并行绘图的方法及系统
CN107357576B (zh) * 2017-06-30 2020-07-28 惠州市德赛西威汽车电子股份有限公司 一种Windows应用程序多窗口并行绘图的方法及系统
CN110109724A (zh) * 2019-04-29 2019-08-09 珠海豹好玩科技有限公司 一种显示方法、装置、终端及存储介质
CN110187881A (zh) * 2019-06-04 2019-08-30 深圳市迅雷网络技术有限公司 一种异形窗口创建方法、系统、装置及计算机存储介质
CN110187881B (zh) * 2019-06-04 2023-09-05 深圳市迅雷网络技术有限公司 一种异形窗口创建方法、系统、装置及计算机存储介质
CN112035193A (zh) * 2020-07-27 2020-12-04 成都安易迅科技有限公司 应用程序的界面生成方法、装置、存储介质及计算机设备
CN111815657A (zh) * 2020-07-28 2020-10-23 安徽沃特水务科技有限公司 一种动态不规则元素边界切割显示方法
CN115658216A (zh) * 2022-12-26 2023-01-31 飞腾信息技术有限公司 应用程序窗口的处理方法、设备及计算机可读存储介质
CN115658216B (zh) * 2022-12-26 2023-03-31 飞腾信息技术有限公司 应用程序窗口的处理方法、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN105302569B (zh) 2019-05-07

Similar Documents

Publication Publication Date Title
CN105302569A (zh) 一种用于生成异形窗口的方法和装置
US10643023B2 (en) Programmatic native rendering of structured content
CN111669623B (zh) 视频特效的处理方法、装置以及电子设备
US8336023B2 (en) Extensible code visualization
US10207190B2 (en) Technologies for native game experience in web rendering engine
CN104995601B (zh) 切换到本机网页应用程序及从本机网页应用程序切换离开
US11636646B2 (en) Method and apparatus for rendering image
CN104850388A (zh) 网页绘制方法及装置
WO2020220773A1 (zh) 图片预览信息的显示方法、装置、电子设备及计算机可读存储介质
CN113626023B (zh) 基于Sketch的跨平台界面开发方法和系统、计算机设备和介质
CN114237563A (zh) 可视化程序构建方法、装置、可读介质及电子设备
CN113688341A (zh) 动态图片分解方法、装置、电子设备及可读存储介质
CN110971958A (zh) 直播礼物横幅逐帧动画展示方法、存储介质、设备及系统
US20230290095A1 (en) User-interface-framework based processing method, apparatus, device, and medium
CN113342450A (zh) 页面处理的方法、装置、电子设备及计算机可读介质
CN117076811A (zh) 一种网页导出方法、装置、设备及存储介质
CN113676677B (zh) 动态图片合成方法、装置、电子设备及可读存储介质
CN111061466A (zh) 行为控制脚本语言的自动化转化方法、系统、终端及介质
CN114415892B (zh) 界面控件生成方法、装置、可读介质及电子设备
CN117234655B (zh) 基于安卓系统运行Linux桌面程序的方法、装置、设备及介质
JP2020095308A (ja) ユーザーインタフェース提供装置、ユーザーインタフェース提供方法、プログラム及び組み込み機器
CN112416214B (zh) 一种显示设备
KR102560619B1 (ko) 노코드툴 서비스를 제공하는 전자 장치 및 그 방법
CN111476874B (zh) 曲面交互界面生成方法及装置、电子设备、存储介质
CN111782333B (zh) 游戏中的界面显示方法、装置、存储介质与终端设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant