CN100561430C - 一种图形用户界面的截取和重现方法 - Google Patents

一种图形用户界面的截取和重现方法 Download PDF

Info

Publication number
CN100561430C
CN100561430C CNB2007101231249A CN200710123124A CN100561430C CN 100561430 C CN100561430 C CN 100561430C CN B2007101231249 A CNB2007101231249 A CN B2007101231249A CN 200710123124 A CN200710123124 A CN 200710123124A CN 100561430 C CN100561430 C CN 100561430C
Authority
CN
China
Prior art keywords
window
drawing function
user interface
information
graphic user
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.)
Expired - Fee Related
Application number
CNB2007101231249A
Other languages
English (en)
Other versions
CN101071380A (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CNB2007101231249A priority Critical patent/CN100561430C/zh
Publication of CN101071380A publication Critical patent/CN101071380A/zh
Application granted granted Critical
Publication of CN100561430C publication Critical patent/CN100561430C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Processing Or Creating Images (AREA)

Abstract

一种图形用户界面的截取方法,其特征在于,使用该图形用户界面的目标窗口的窗口图形属性信息以及对该目标窗口进行重绘所需的绘图函数的名称和相应的绘图动作数据,生成表示该图形用户界面的目标窗口图形的复合图形数据;所述窗口图形属性信息包含窗口大小和窗口属性;所述绘图动作数据是绘图函数的参数所标识的、用于完成该绘图函数对应的绘图操作的数据。本发明通过在窗口绘图函数库中注入绘图函数拦截器,并通过拦截并记录窗口的绘图动作生成图形用户界面的矢量图或包含矢量图和位图数据的复合图形数据。按照本发明的方法生成的图形用户界面的图形数据数据量小,便于存储和传输,处理速度较快。

Description

一种图形用户界面的截取和重现方法
技术领域
本发明涉及一种图形用户界面(Graphical User Interfaces,简称GUI)的截取和重现方法。
背景技术
计算机绘图分为绘制位图和矢量图两大类。其中:位图是像素点的集合,以像素点的位置与颜色值表示;矢量图,也称为面向对象的图像,则使用线段和曲线描述图像,同时也包含了色彩和位置信息。两种图形表示方式各有优缺点,位图的优点是色彩变化丰富,在编辑时可以改变位图中的任意形状的区域内的色彩显示效果,相应的,要实现的效果越复杂,需要的像素点数越多,图像文件的大小越大。矢量图的优点是轮廓的形状更容易修改和控制,但是对于单独的对象,色彩变化的实现不如位图方便直接。矢量图可以很容易地转化成位图,但是位图转化为矢量图却比较困难,往往需要经过复杂的运算和手工调节。
目前,在个人和企业计算机应用领域,Windows(视窗)等基于图形用户界面的操作系统占有了大部分的市场份额,甚至在以手机为代表的嵌入式产品领域,也出现了大量的基于图形用户界面的操作系统,如Symbian(塞班)等。我们称这些基于图形用户界面的操作系统为图形操作系统。在图形操作系统中运行的应用程序,大多具有图形用户界面,用户通过图形用户界面与程序进行交互。应用程序的图形用户界面可以包含多个窗口,每个窗口通常具有菜单,各种命令按键等控件供用户输入操作指令。此外,窗口中通常还包含客户区(显示区),用于实时显示程序当前运行状态的信息,或由用户绘图或输入文字信息。因此在图形操作系统中,计算机绘图通常是指对应用程序窗口的客户区和非客户区的绘制。
图1是图形操作系统中的应用程序运行环境结构示意图。如图1所示,应用程序的图形用户界面包含多个窗口,当应用程序的窗口需要重新绘制时(例如窗口客户区的文字改变),应用程序向窗口管理单元发送重绘消息,通知窗口状态的改变;窗口管理单元接收到重绘消息后调用窗口绘图函数库中的一系列绘图函数,并将与绘图相关的信息以参数形式传递给窗口绘图函数库的相关绘图函数;每个被调用的绘图函数根据传入的参数执行对相应窗口的绘图操作,改写屏幕显示存储区中的与屏幕像素位置对应的像素点的颜色值(通常以RGB值表示一个像素点);操作系统(图中略)根据屏幕显示存储区中的各像素点的颜色值绘制屏幕图像。
目前,在需要对当前显示在屏幕上的应用程序的图形用户界面进行截取操作时,通常采用截屏的方式,即通过操作系统提供的调用接口获得整个屏幕的位图数据(即屏幕各像素点的RGB值),并将位图数据以文件形式存储或传输。以截屏方式对图形用户界面进行截取存在如下问题:
1.数据量大,而且要求的清晰度越高,位图包含的像素点就越多,需要的存储空间也就越大;在进行远程应用程序监控时,将消耗掉大量的网络带宽传送对应的位图数据;
2.图像处理较耗时,由于截屏得到的是整个屏幕的位图数据,如果只需要某个或某几个窗口的图像还要进行裁减。在实时监控这种应用领域,通常要求响应迅速,尤其是在监控方屏幕上需要同时显示多个被监控方的窗口时,截屏方式很难满足监控的实时性要求;
3.位图在进行缩放变换后会失真,不方便处理。
由于图形用户界面的形状比较规整,比较适合用矢量图表示,因此现有一些图形软件将截屏得到的位图,经过复杂的图形分析转换为矢量图,再将矢量图进行保存或传输,这样做虽然能够减少存储空间和网络传输带宽,但加重了运算负荷,处理效率较低。
发明内容
本发明所要解决的技术问题是克服现有技术中图形用户界面的截取方法的不足,提出一种数据量小,便于存储、传输,且处理速度快的图形用户界面的截取方法及相应的图形重现方法。
为了解决上述问题,本发明提供一种图形用户界面的截取方法,其特征在于,对该图形用户界面进行截取时,先获取该图形用户界面的目标窗口的窗口图形属性信息以及对该目标窗口进行重绘所需的绘图函数的名称和相应的绘图动作数据;再使用所述窗口图形属性信息、绘图函数的名称和相应的绘图动作数据生成表示该图形用户界面的目标窗口图形的复合图形数据;所述窗口图形属性信息包含窗口大小和窗口属性;所述绘图动作数据是绘图函数的参数所标识的、用于完成该绘图函数对应的绘图操作的数据。
此外,所述窗口图形属性信息、绘图函数的名称和相应的绘图动作数据的获取,以及复合图形数据的生成具体通过以下步骤实现:
A)向用于对图形用户界面的窗口进行绘图的绘图函数注入绘图函数拦截器,使得绘图函数将被调用时,相应的绘图函数拦截器代替其被调用;
B)获取目标窗口的窗口标识信息;
C)使用该窗口标识信息启动对目标窗口的截图操作;获取该目标窗口的窗口图形属性信息,将其记录在对应的复合图形数据存储区中,并向目标窗口发送针对窗口全部区域的重绘消息;
当绘图函数拦截器被调用时,执行以下步骤:
D)获取调用窗口标识信息,并根据该窗口标识信息判断对应窗口是否处于截图操作状态:如果是,则执行步骤E);否则,执行步骤F);
E)将对应的绘图函数的名称、绘图函数参数对应的绘图动作数据记录在该调用窗口标识信息对应的复合图形数据存储区中,执行步骤F);
F)调用对应的绘图函数。
此外,所述步骤C)中的启动对目标窗口的截图操作的过程包含以下子步骤:
C1)将所述目标窗口对应的操作状态位设置为启动状态;
C2)启动所述目标窗口对应的长度为T的定时器;
所述步骤C)之后包含如下步骤:
G)当所述目标窗口对应的定时器超时时,将所述目标窗口对应的操作状态位设置为停止状态,结束对所述目标窗口的截图操作;
其中T大于或等于完成一次窗口重绘操作所需的时间。
此外,所述步骤G)之后还包含如下步骤:存储或传输或处理所述复合图形数据存储区中保存的包含窗口图形属性信息和绘图函数名称、绘图函数参数对应的绘图动作数据的复合图形数据。
此外,所述步骤D)中根据窗口标识信息判断对应窗口是否处于截图操作状态的过程包含如下子步骤:
D1)若该窗口标识信息对应的操作状态位为启动状态,则判断结果为是;
D2)若该窗口标识信息对应的操作状态位为停止状态,则判断结果为否;
D3)若未找到与该窗口标识信息对应的操作状态信息,则判断结果为否。
此外,在所述步骤A)中,采用钩子函数的方法,将钩子函数作为绘图函数拦截器实现注入所述绘图函数。
此外,所述图形用户界面的开发/运行环境为JAVA,所述步骤A)包含如下子步骤:
A1)创建扩展图形环境,并通过设置所述目标窗口所属的目标程序的启动参数,将该目标程序的图形环境设置为该扩展图形环境;
A2)创建与该扩展图形环境相关联的扩展图形设备;创建与该扩展图形设备相关联的扩展图形配置信息对象;
A3)在该扩展图形配置信息对象中创建扩展空白图像,并重写该扩展空白图像的createGraphics方法,使该方法返回包含作为绘图函数拦截器的绘图方法的扩展绘图对象,完成绘图函数拦截器的注入;
其中,上述扩展绘图对象为绘图对象的子类。
此外,在所述扩展绘图对象的dispose方法被调用时停止对所述目标窗口的截图操作。
此外,所述窗口图形属性信息还包含窗口的标题信息、窗口的图标资源信息、窗口的菜单资源信息。
本发明还提供一种图形用户界面的重现方法,其特征在于,该方法对包含窗口图形属性信息以及绘图函数名称和相应的绘图动作数据的复合图形数据进行如下操作:
H)根据所述窗口图形属性信息创建相同或相应类型的窗口以及相应的绘图函数库;记录该窗口的窗口标识信息;
I)根据所述复合图形数据中包含的各绘图函数名称和相应的绘图动作数据以及上述窗口标识信息,生成相应的绘图函数所需的参数,并使用该参数调用所述绘图函数库中相应的绘图函数,对该窗口进行绘图操作;
所述窗口图形属性信息包含窗口大小和窗口属性;所述绘图动作数据是用于完成对应的绘图函数所执行的绘图操作的数据。
本发明通过在窗口绘图函数库中注入绘图函数拦截器,并通过拦截并记录窗口的绘图动作生成图形用户界面的矢量图或包含矢量图和位图数据的复合图形数据。按照本发明的方法生成的图形用户界面的图形数据数据量小,便于存储和传输,处理速度较快。
附图说明
图1是图形操作系统中的应用程序运行环境结构示意图;
图2是本发明第一实施例图形用户界面的截取方法流程图;
图3是注入绘图函数拦截器前后的函数调用关系示意图;
图4是本发明第一实施例图形用户界面的重现方法流程图;
图5为JAVA开发/运行环境的结构示意图;
图6是本发明第二实施例采用绘图对象替换方式注入绘图函数拦截器的方法流程图。
具体实施方式
由于图形用户界面的图形通常由图标和非图标控件组合而成。其中,图标通常形状不规则,色彩变化大,适合用位图表示;非图标控件的形状规则,色彩变化不大,适合用矢量图表示,因此可以采用包含位图和矢量图数据的复合图形数据来保存图形用户界面的图形信息;而上述复合图形数据可以在对图形用户界面进行绘图操作的绘图函数被调用时,通过记录绘图函数的名称和对应的绘图动作数据的方式生成。
下面将结合附图和实施例,对本发明进行详细说明。
图2是本发明第一实施例图形用户界面的截取方法流程图。如图2所示,图形用户界面的截取(即窗口截图)方法包含如下步骤:
101:向窗口绘图函数库的所有绘图函数注入绘图函数拦截器,使得绘图函数库的绘图函数将被调用时,相应的绘图函数拦截器代替其被调用。
由图1可知,当需要进行窗口重绘时,应用程序向窗口管理单元发送重绘消息,窗口管理单元接收到该消息后调用窗口绘图函数库中的绘制该窗口所需的一系列绘图函数,因此可以将绘图函数拦截器注入窗口绘图函数库的各绘图函数中。绘图函数拦截器可以获得被调用的绘图函数的名称、参数等信息。
图3是注入绘图函数拦截器前后的函数调用关系示意图。图中的实线表示在注入绘图函数拦截器前,窗口管理单元中的调用函数对窗口绘图函数库中的绘图函数进行调用时的函数调用关系;虚线表示注入拦截器后调用函数对绘图函数进行调用时的函数调用关系。
在本实施例中使用钩子函数作为绘图函数拦截器。对于运行在Windows等操作系统的应用程序,注入绘图函数拦截器可采用钩子函数的方法。钩子函数是Windows系统中非常重要的系统接口,用于拦截并处理应用程序的函数调用或消息处理过程。例如,绘图函数的名称为DrawLine( ),若需要拦截对该函数的调用,可以定义一个钩子函数MyHook( );安装该钩子函数后,每当DrawLine( )函数被调用时,程序将自动转至MyHook( )函数执行。因此,采用这种方法时,钩子函数MyHook( )就是绘图函数拦截器。关于钩子函数的具体使用方法请参阅相关开发文档。
102:获取目标窗口的窗口标识信息;
目标窗口就是需要对其进行截图操作的窗口,该窗口所属的应用程序称为目标应用程序。
由于应用程序的图形用户界面可能包含多个窗口,可以对其中的一个或多个窗口进行截图操作,因此需要获取进行截图操作的目标窗口的窗口标识信息。窗口标识信息在Windows开发/运行平台中被称作窗口句柄,而在JAVA开发/运行平台中被称作窗口/顶层容器引用。
窗口标识信息可通过调用开发/运行平台提供的API(ApplicationProgramming Interface,应用程序开发接口)函数获得;不同的开发/运行平台提供的API不同。例如,在Windows平台中,可调用FindWindow( )等函数获得目标窗口句柄。
103:创建目标窗口的复合图形数据存储区,记录该存储区的标识信息;
上述存储区的标识信息用于获取复合图形数据存储区当前的存储位置。上述存储区可以是:内存中的一块连续的存储空间,其标识信息为该存储空间的起始地址+当前偏移地址;一个文件,其标识信息为该文件名称或文件句柄;一个链表对象,其标识信息为该链表对象的链表头地址或链表句柄。
104:启动对目标窗口的截图操作;
启动截图操作就是使绘图函数拦截器在被调用时(由绘图函数被调用所引发)可以获知当前目标窗口正处于截图操作状态。
启动截图操作包含如下子步骤:
104a:设置目标窗口对应的操作状态位,例如,创建如表1所示的窗口状态表,将目标窗口的窗口标识信息(窗口句柄)对应的操作状态值设置为1(启动状态);
104b:启动目标窗口对应的截图操作定时器,即启动表1中目标窗口的窗口标识信息对应的定时器;
可将对应的窗口标识信息作为参数传递给定时器,使其超时被触发时可以确定定时器所属的窗口。
  窗口标识信息 操作状态   定时器标识   存储区标识信息
  窗口句柄1   1   定时器1   存储地址1
  窗口句柄2   0   定时器2   存储地址2
表1
表1中的窗口句柄1、窗口句柄2为应用程序的2个窗口的窗口标识信息;操作状态值为1表示正在对相应窗口进行截图操作,值为0(停止状态)表示没有进行截图操作;存储地址1、存储地址2为复合图形数据存储区的当前存储位置。如果以文件方式保存复合图形数据,存储区标识信息可以是文件名或文件句柄。
105:使用窗口标识信息获取目标窗口的窗口图形属性信息,生成复合图形数据的窗口图形属性部分,记录在对应的复合图形数据存储区中,并向目标窗口发送窗口全部区域的重绘消息;
在目标窗口接收到上述重绘消息后,窗口的消息处理函数会将该消息发送至窗口管理单元,同时将窗口标识信息传递给窗口管理单元;窗口管理单元使用窗口标识信息调用窗口绘图函数库中的相应绘图函数开始对目标窗口的全部区域进行重绘,从而触发对应的绘图函数拦截器运行。
上述复合图形数据包含两部分:窗口图形属性和窗口图形主体。
窗口图形属性部分以类型/长度/内容的形式依次记录窗口图形属性信息。窗口图形主体部分包含多个窗口图形主体项,每个窗口图形主体项用于记录绘图函数的名称及对应的绘图动作数据。
上述窗口图形属性信息包含:窗口的大小、窗口的标题信息、窗口的类型、窗口的图标资源信息、窗口的菜单资源信息等。对于Windows开发/运行平台上的应用程序,窗口的类型可以是单文档、多文档、对话框等;对于JAVA开发/运行平台上的应用程序,窗口类型可以是:JFrame、JWindow、Jdialog等。其中,窗口的图标资源信息为窗口图标的位图数据。
窗口图形属性信息可通过调用开发/运行平台提供的API函数获得。例如在Windows平台,可以使用GetWindowText( )函数获得窗口的标题信息;使用GetWindowRect( )获得窗口的大小。
在生成复合图形数据的窗口图形属性部分时,除窗口的大小、窗口的类型外,其它都可以省略。
根据窗口图形属性信息生成复合图形数据的窗口图形属性部分时,通常需要进行数据转换,例如根据获得的目标窗口的图标的位图对象指针/引用获取对应的位图数据,并将该位图数据压缩成JPEG(Joint PhotographicExperts Group,联合图像专家组)格式的数据进行存储。
将复合图形数据保存在复合图形数据存储区后可能需要修改相应的存储区标识信息,例如,若以内存中的一块连续的存储空间来存储复合图形数据,则在数据写入后需要修改当前的偏移地址,使得后续数据写入正确的位置。若以文件方式存储复合图形数据,则无需进行存储区标识信息的调整。
当绘图函数拦截器被调用时执行以下步骤106~108:
106:被调用的绘图函数拦截器获取引发相应的绘图函数调用的窗口的窗口标识信息(简称调用窗口标识信息),并根据该窗口标识信息从表1中查询该窗口当前是否处于截图状态:
如果是,则执行步骤107;
否则,执行步骤108。
查询当前是否处于截图状态就是绘图函数拦截器根据窗口标识信息从表1中查询对应的操作状态值;若对应操作状态值为1表示正处于截图状态;若值为0或不存在对应的窗口标识信息则表示该窗口没有处于截图状态。
窗口标识信息可以是窗口管理单元以参数的方式传递给绘图函数,因此绘图函数拦截器可以直接通过读取该参数获得;或者可以通过绘图函数拦截器提取调用函数的指针,获取对应的调用函数所述的类/对象信息(例如类名称,该类所属的父类等),通过该类/对象信息获得调用窗口的句柄/引用等窗口标识信息。
107:绘图函数拦截器根据窗口标识信息获取对应的存储区标识信息,并将被调用的绘图函数的名称及其参数所对应的绘图动作数据作为复合图形数据的窗口图形主体项记录在存储区标识信息所指示的复合图形数据存储区中;
上述绘图动作数据是绘图函数的参数所标识的、与目标程序上下文(Context)无关的、实际用于完成该绘图函数对应的绘图操作的数据。绘图函数所使用的参数有时是指向某一内存区域的指针、或某一对象的句柄/引用;而上述指针、句柄、引用等信息在脱离了当前的程序运行上下文后即失去了意义,无法被重新使用。因此,需要记录该参数所标识的用于实际绘图动作的绘图动作数据。例如,位图函数的参数包含指向一个位图对象的指针,需要将其转换为该指针所指向的实际用于绘制位图的位图数据(绘图动作数据)。当然,对于某些绘图函数,其部分或全部参数与绘图动作数据相同。
绘图函数可分为两大类:位图函数,矢量函数。位图函数的参数所对应的绘图动作数据为对应绘制区域中的每个像素点的RGB值;矢量函数的参数所对应的绘图动作数据为相应的绘图动作所需的特征参数。通常情况下,位图函数的参数所对应的绘图动作数据比矢量函数的参数所对应的绘图动作数据的数据量大得多。以一根直线图形为例,如果以位图方式表示,则位图函数的参数所对应的绘图动作数据为该直线所有的像素点的RGB值(或灰度值);若以矢量图表示,矢量函数的参数所对应的绘图动作数据则是该直线的两个端点的位置信息。
108:绘图函数拦截器根据所拦截的绘图函数的名称及其参数调用相应的绘图函数。
109:若上述定时器超时,则将表1中与目标窗口对应的操作状态值设置为0,结束对该目标窗口的截图操作;
定时器的长度应大于或等于对目标窗口进行一次重绘操作所需的时间,其值由系统性能和图形的复杂程度决定。
110:存储或传输所生成的目标窗口对应的复合图形数据。
图4是本发明第一实施例图形用户界面的重现(即窗口重现)方法流程图。图形用户界面的重现就是根据上述复合图形数据中包含的信息,重新绘制对应的图形用户界面(窗口)。如图4所示,图形用户界面的重现包含如下步骤:
201:读取复合图形数据中的窗口图形属性部分,根据其中包含的窗口图形属性信息调用相应的API函数,创建相同或相应类型的窗口以及相应的绘图函数库;记录所创建窗口的窗口标识信息(例如,窗口句柄);
202:读取复合图形数据中的各窗口图形主体项,根据其中包含的函数名称及其绘图动作数据以及上述窗口标识信息,依次生成相应的绘图函数所需的参数,并使用该参数调用该绘图函数,对该窗口进行绘图操作;
在对绘图函数进行调用前,需要将复合图形数据中记录的绘图动作数据转换成对应的绘图函数库中的绘图函数参数。例如,复合图形数据中记录的位图函数的绘图动作数据包含JPEG压缩格式的图像数据,需要将其转换成BMP格式的位图数据,并生成包含该位图数据的位图对象,将该位图对象的指针/引用作为参数传递给相应的位图函数。
此外,图形用户界面的重现通常需要与截取处于相同的开发/运行环境中。也就是说,对在某一开发/运行环境中运行的应用程序的图形用户界面的复合图形数据,需要在同样的开发/运行环境中对其重现。例如,对Windows应用程序的图形用户界面进行截取所生成的复合图形数据,若要对其进行重现,同样需要依赖Windows开发/运行环境。产生这种局限性主要有以下原因:
一、每一种开发/运行环境中的图形用户界面具有不同的属性,若放入另一环境中,则很难使用复合图形数据中包含的窗口图形属性信息创建外观完全相同的窗口;
二、不同的开发/运行环境中的窗口绘图函数库包含的绘图函数名称和所需参数可能不同。
当然可以通过对复合图形数据进行转换来解决或部分解决上述问题,例如,在不同的开发/运行环境中重现复合图形数据对应的窗口时,虽然不能创建类型/外观完全相同的窗口,但可以创建类型/外观相似的窗口;此外,还可以对绘图函数名称和绘图动作数据进行转换以适应新的开发/运行环境。
下面将通过第二实施例对本发明作进一步描述。此实施例对应对JAVA(爪洼)平台中使用SWING(摇摆)开发工具所开发的应用程序的图形用户界面进行截取。
图5为JAVA开发/运行环境的结构示意图。如图5所示,在JAVA平台中开发/运行的应用程序(简称JAVA程序)的图形用户界面都是通过Graphics2D函数库绘制到终端设备(通常就是显示器屏幕)。其中,SWING是在JAVA平台中普遍采用的图形界面开发工具包,其中包含了对图形用户界面进行管理的窗口管理单元。JAVA2D图形库中包含Graphics2D窗口绘图函数库。
在此实施例中,对图形用户界面进行截取和重现的步骤与上一实施例基本相同,只是采用了替换Graphics2D绘图对象的方式实现注入绘图函数拦截器。由于JAVA程序的开发基于面向对象技术,因此JAVA程序中的窗口(称为顶层容器)、窗口对应的窗口管理单元、以及Graphics2D窗口绘图函数库都是以对象(Object)/类(Class)的形式存在。而Graphics2D窗口绘图函数库中的所有绘图函数都以Graphics2D绘图对象的方法的形式存在。
在默认情况下,系统会为JAVA应用程序的每一个顶层容器配置一个Graphics2D绘图对象(称为系统绘图对象),由该绘图对象对顶层容器进行绘制操作。也就是说,在为应用程序创建一个新的顶层容器并使其显示在屏幕上时,或者顶层容器中的某个或整个区域需要重新绘制时,将会调用与该顶层容器对应的Graphics2D绘图对象的相应方法(即绘图函数)。因此只要能够将目标顶层容器的系统绘图对象替换成自定义的扩展绘图对象,即可拦截该顶层容器的所有绘图函数调用。
图6是本发明第二实施例采用绘图对象替换方式注入绘图函数拦截器的方法流程图。如图6所示,注入绘图函数拦截器包含如下步骤:
301:通过继承图形环境类(GraphicsEnvironment)的方式创建扩展图形环境(记作ExtGe);
JAVA中的图形环境用于定义一个不同操作平台上JAVA程序可见的着色设备(Rendering Devices)的集合。着色设备包括显示器、打印机和图像缓冲器。
302:设置JAVA程序启动参数,将JAVA应用程序的图形环境设置为上述扩展图形环境ExtGe;
例如,在目标应用程序的启动配置文件中写入以下命令,将ExtGe设置为该应用程序的图形环境:
set_JAVA_OPTIONS   -Djava.awt.graphicsenv ExtGe
303:在扩展设备环境中创建扩展图形设备(GraphicsDevice);将显示器作为当前指定的着色设备,该扩展图形设备与该扩展设备环境相关联。
304:在上述扩展图形设备中创建扩展图形配置信息对象(GraphicsConfiguration),该扩展图形配置信息对象与该扩展图形设备相关联。
305:在扩展图形配置信息对象中创建扩展空白图像ExtImage。
306:重写上述扩展空白图像ExtImage的createGraphics方法,使该方法返回的绘图对象为扩展绘图对象(记作ExtGraphics2D);其中扩展绘图对象ExtGraphics2D为绘图对象Graphics2D的子类;扩展绘图对象的各绘图方法(绘图函数)就是被注入的绘图函数拦截器。
经过上述步骤301至306,当目标应用程序的顶层容器需要进行绘图动作时,将会调用扩展绘图对象(ExtGraphics2D)中的对应绘图方法/函数。因此只需将扩展绘图对象中的每个绘图函数(即绘图对象的方法)进行重写,使其作为绘图函数拦截器拦截相应的绘图函数调用,并执行上述步骤107中的操作;并在步骤108中,通过调用其父类(Graphics2D)的同名绘图函数,执行相应的绘图操作。
此外,由于上述扩展绘图对象在一段时间内没有使用时(例如,其对应的顶层容器一段时间内没有重绘动作),系统将删除该扩展绘图对象;当需要对顶层容器进行重绘时,系统又将重新创建该扩展绘图对象。因此,可以在该扩展绘图对象的dispose方法中将表1中与目标窗口对应的操作状态值设置为0,结束对该目标窗口的截图操作。
下面将对Graphics2D绘图函数库中的绘图函数及其参数,以及参数对应的绘图动作数据进行分类描述。Graphics2D绘图函数库中的绘图函数包含以下几类:
1.位图函数:用于绘制位图,如drawImage( )函数;其参数包括位图对象的引用以及位图所处区域的坐标值;因此绘图动作数据包括该引用所指向的位图数据以及位图所处区域的坐标值;
2.矢量函数,包括位置描述函数、属性设置函数、文本绘制函数、形状绘制函数、形状填充函数等。其中:
1)位置描述函数,用于指定控件位置或控件有效区域,如:translate( )函数;其参数为整数值,表示坐标值;绘图动作数据与参数相同;
2)属性设置函数,用于设置图形属性,如:setColor( )函数,其参数为颜色对象的引用;绘图动作数据为该颜色对象引用所指向的颜色值(RGB值);
3)文本绘制函数,用于绘制文本,如drawString( )函数,其参数为字符串对象的引用;绘图动作数据为该引用所指向的字符串值;
4)形状绘制函数,用于绘制直线、折线、矩形、圆形等封闭或开放图形,如drawRect( ),其参数为矩形左上角坐标和矩形宽度、矩形高度值,绘图动作数据与参数相同;
5)形状填充函数,用于使用特定颜色填充封闭图形,其参数和绘图动作数据与形状绘制函数相似。
将上述绘图函数名称与对应的绘图动作数据作为复合图形数据的窗口图形主体项依次保存在复合图形数据存储区中,与窗口图形属性部分一起构成包含位图数据和矢量图数据的复合图形数据。
基于本发明原理,在上述实施例的基础上还可以做各种变换。例如,对于不使用窗口管理单元,而采用直接调用窗口绘图函数库中的绘图函数绘制窗口的应用程序,可以在其调用绘图函数的同时,将绘图函数的名称和相应的绘图动作数据写入存储区,连同该窗口的窗口图形属性信息生成复合图形数据,达到对该应用程序的图形用户界面进行截取的目的。

Claims (10)

1、一种图形用户界面的截取方法,其特征在于,对该图形用户界面进行截取时,先获取该图形用户界面的目标窗口的窗口图形属性信息以及对该目标窗口进行重绘所需的绘图函数的名称和相应的绘图动作数据;再使用所述窗口图形属性信息、绘图函数的名称和相应的绘图动作数据生成表示该图形用户界面的目标窗口图形的复合图形数据;所述窗口图形属性信息包含窗口大小和窗口属性;所述绘图动作数据是绘图函数的参数所标识的、用于完成该绘图函数对应的绘图操作的数据。
2、如权利要求1所述的图形用户界面的截取方法,其特征在于,所述窗口图形属性信息、绘图函数的名称和相应的绘图动作数据的获取,以及复合图形数据的生成具体通过以下步骤实现:
A)向用于对图形用户界面的窗口进行绘图的绘图函数注入绘图函数拦截器,使得绘图函数将被调用时,相应的绘图函数拦截器代替其被调用;
B)获取目标窗口的窗口标识信息;
C)使用该窗口标识信息启动对目标窗口的截图操作;获取该目标窗口的窗口图形属性信息,将其记录在对应的复合图形数据存储区中,并向目标窗口发送针对窗口全部区域的重绘消息;
当绘图函数拦截器被调用时,执行以下步骤:
D)获取调用窗口标识信息,并根据该窗口标识信息判断对应窗口是否处于截图操作状态:如果是,则执行步骤E);否则,执行步骤F);
E)将对应的绘图函数的名称、绘图函数参数对应的绘图动作数据记录在该调用窗口标识信息对应的复合图形数据存储区中,执行步骤F);
F)调用对应的绘图函数。
3、如权利要求2所述的图形用户界面的截取方法,其特征在于,
所述步骤C)中的启动对目标窗口的截图操作的过程包含以下子步骤:
C1)将所述目标窗口对应的操作状态位设置为启动状态;
C2)启动所述目标窗口对应的长度为T的定时器;
所述步骤C)之后包含如下步骤:
G)当所述目标窗口对应的定时器超时时,将所述目标窗口对应的操作状态位设置为停止状态,结束对所述目标窗口的截图操作;
其中T大于或等于完成一次窗口重绘操作所需的时间。
4、如权利要求3所述的图形用户界面的截取方法,其特征在于,所述步骤G)之后还包含如下步骤:存储或传输或处理所述复合图形数据存储区中保存的包含窗口图形属性信息和绘图函数名称、绘图函数参数对应的绘图动作数据的复合图形数据。
5、如权利要求3所述的图形用户界面的截取方法,其特征在于,所述步骤D)中根据窗口标识信息判断对应窗口是否处于截图操作状态的过程包含如下子步骤:
D1)若该窗口标识信息对应的操作状态位为启动状态,则判断结果为是;
D2)若该窗口标识信息对应的操作状态位为停止状态,则判断结果为否;
D3)若未找到与该窗口标识信息对应的操作状态信息,则判断结果为否。
6、如权利要求2所述的图形用户界面的截取方法,其特征在于,在所述步骤A)中,采用钩子函数的方法,将钩子函数作为绘图函数拦截器实现注入所述绘图函数。
7、如权利要求2所述的图形用户界面的截取方法,其特征在于,所述图形用户界面的开发/运行环境为JAVA,所述步骤A)包含如下子步骤:
A1)创建扩展图形环境,并通过设置所述目标窗口所属的目标程序的启动参数,将该目标程序的图形环境设置为该扩展图形环境;
A2)创建与该扩展图形环境相关联的扩展图形设备;创建与该扩展图形设备相关联的扩展图形配置信息对象;
A3)在该扩展图形配置信息对象中创建扩展空白图像,并重写该扩展空白图像的createGraphics方法,使该方法返回包含作为绘图函数拦截器的绘图方法的扩展绘图对象,完成绘图函数拦截器的注入;
其中,上述扩展绘图对象为绘图对象的子类。
8、如权利要求7所述的图形用户界面的截取方法,其特征在于,在所述扩展绘图对象的dispose方法被调用时停止对所述目标窗口的截图操作。
9、如权利要求1所述的图形用户界面的截取方法,其特征在于,所述窗口图形属性信息还包含窗口的标题信息、窗口的图标资源信息、窗口的菜单资源信息。
10、一种图形用户界面的重现方法,其特征在于,该方法对包含窗口图形属性信息以及绘图函数名称和相应的绘图动作数据的复合图形数据进行如下操作:
H)根据所述窗口图形属性信息创建相同或相应类型的窗口以及相应的绘图函数库;记录该窗口的窗口标识信息;
I)根据所述复合图形数据中包含的各绘图函数名称和相应的绘图动作数据以及上述窗口标识信息,生成相应的绘图函数所需的参数,并使用该参数调用所述绘图函数库中相应的绘图函数,对该窗口进行绘图操作;
所述窗口图形属性信息包含窗口大小和窗口属性;所述绘图动作数据是用于完成对应的绘图函数所执行的绘图操作的数据。
CNB2007101231249A 2007-06-27 2007-06-27 一种图形用户界面的截取和重现方法 Expired - Fee Related CN100561430C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101231249A CN100561430C (zh) 2007-06-27 2007-06-27 一种图形用户界面的截取和重现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101231249A CN100561430C (zh) 2007-06-27 2007-06-27 一种图形用户界面的截取和重现方法

Publications (2)

Publication Number Publication Date
CN101071380A CN101071380A (zh) 2007-11-14
CN100561430C true CN100561430C (zh) 2009-11-18

Family

ID=38898616

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101231249A Expired - Fee Related CN100561430C (zh) 2007-06-27 2007-06-27 一种图形用户界面的截取和重现方法

Country Status (1)

Country Link
CN (1) CN100561430C (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101643608B1 (ko) 2009-02-13 2016-07-29 삼성전자주식회사 리모트 ui 서비스 제공 방법 및 장치
CN102073973B (zh) * 2009-11-25 2015-06-17 新奥特(北京)视频技术有限公司 一种获取、编辑自定义图形的方法和字幕图形制作系统
CN101853157B (zh) * 2010-05-14 2013-04-10 中国科学院软件研究所 一种应用软件gui对象自动识别方法
CN102054280B (zh) * 2010-11-29 2013-06-12 广东威创视讯科技股份有限公司 快速生成矢量图的方法及装置
CN103092596B (zh) * 2011-11-08 2016-03-30 中国移动通信集团陕西有限公司 低级界面开发自动实现界面反转的方法及装置
CN102799432B (zh) * 2012-06-30 2015-01-14 邱东 一种基于记录绘图指令的游戏录像及回放方法
CN102902541B (zh) * 2012-09-27 2016-02-24 北京国双科技有限公司 Ios平台上捕获系统消息的方法和装置
CN103729174B (zh) * 2012-10-16 2017-10-27 腾讯科技(深圳)有限公司 截屏方法及装置
GB201221317D0 (en) * 2012-11-27 2013-01-09 Omron Tateisi Electronics Co Method and device for changing objects in a human-machine interface device
CN103593184B (zh) * 2013-10-31 2016-08-17 福州瑞芯微电子股份有限公司 图像显示系统及图像显示方法
CN104765595B (zh) * 2014-01-08 2018-05-22 联发科技(新加坡)私人有限公司 一种显示图形用户界面的方法及装置
CN103942044B (zh) * 2014-03-18 2017-08-25 北京领通科技有限公司 移动终端应用内的远程协助方法及系统
CN105701127A (zh) * 2014-11-27 2016-06-22 广州市动景计算机科技有限公司 网页页面的截图处理方法及装置
CN105100870B (zh) * 2015-07-23 2018-07-13 海信集团有限公司 一种截屏方法及终端设备
CN106406862B (zh) * 2016-08-31 2019-10-25 福建省天奕网络科技有限公司 一种屏幕获取方法及系统
CN107221019B (zh) * 2017-03-07 2021-02-26 武汉唯理科技有限公司 图表转换方法及装置
CN109976749B (zh) * 2019-03-28 2024-01-16 深圳市创联时代科技有限公司 一种绘图过程的继承方法
CN113835600B (zh) * 2021-09-24 2024-05-14 统信软件技术有限公司 一种应用窗口旋转方法、计算设备及可读存储介质

Also Published As

Publication number Publication date
CN101071380A (zh) 2007-11-14

Similar Documents

Publication Publication Date Title
CN100561430C (zh) 一种图形用户界面的截取和重现方法
RU2321892C2 (ru) Язык разметки и объектная модель для векторной графики
RU2324229C2 (ru) Визуальный и пространственный графические интерфейсы
US8627217B2 (en) Window display system, window display method, program development support device, and server device
JP5374873B2 (ja) 情報処理装置、情報処理システム、コンピュータプログラム、及び情報処理方法
CN110378063B (zh) 基于智慧建筑空间的设备部署方法、装置、以及电子设备
US20140282175A1 (en) Method and system of visually depicting hierarchical data through selective colorization
JP2008170939A (ja) 電子機器、情報処理装置、画像改変方法及び情報処理方法
CN106569783A (zh) 一种执行任务脚本的方法和装置
CN112231608B (zh) 一种嵌入式Web组态图元的实现方法
CN108304239B (zh) 用于远程操作的快速界面交互方法及装置
CN100412902C (zh) 图形图像数据信息提取方法
CN113368492A (zh) 渲染的方法、装置
CN104866318A (zh) 一种多窗口中标签页的展示方法及装置
CN109298806B (zh) 一种基于对象识别的远程快速界面交互方法及装置
CN107818588A (zh) Android系统基于JNI多线程调用Qt绘图的装置和方法
CN111667199A (zh) 工作流构建方法、装置、计算机设备和存储介质
CN103150198A (zh) 一种组态软件的显示方法
CN105446676B (zh) 进行大屏显示的方法及装置
CN114862999A (zh) 一种打点渲染方法、装置、设备及存储介质
KR20180066356A (ko) BPM 기반의 IoT DIY 시스템 및 이의 구현방법
KR101748548B1 (ko) IoT네트웍 시스템
CN110955739B (zh) 标绘处理方法、共享图像标绘方法及标绘再现方法
CN107832460A (zh) 基于svg的实时显示卫星测控数据的图形页面控制方法
JP2002108600A (ja) 制御システムの端末装置、記録媒体、および、制御システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091118

Termination date: 20170627