以面向对象为基础的即时画图交互方法与流程

文档序号:16214411发布日期:2018-12-08 08:10阅读:171来源:国知局
以面向对象为基础的即时画图交互方法与流程

本发明涉及一种即时画图交互方法,尤其是涉及一种以面向对象为基础的即时画图交互方法。

背景技术

在人与人交流的方式中,除了语音,文字和表情的交流外,画图也是一项必不可少的方式。尤其是在人们面对面讨论复杂问题的时候,往往一个人用语言描述说了很长时间,对方也不能很好的理解,但通过简单的画图,就能把复杂问题的逻辑关系很清楚的表达出来,这样,对方也能很好的理解了。即使对方有不同意见,他也可以在所绘的图形的基础上,作相应的改变,以表达自己的不同意见。这样,双方都能够很清楚的理解对方的思想。

当前,市场上有很多即时性的文字和语音的通信软件和技术,然而,却没有即时性的画图的通信软件或技术。当前,有一些网络画图软件,具有单向的画图传输的能力。所谓单向,即从在a端画的图像可以传输到b端,然而数据到了b端,在b端的用户是不能够即时的改变从a端传输过来的图形对象的各种属性的,即不能整体的改变从a端传输过来的图形对象的位移,或颜色等等。这种技术的实现,只是把所画的像素记录并传输,那种是单纯的传输的像素,而不是把所画的事物作为一个个的对象作为记录并传输。所以,那样的技术只能是一旦一个对象绘制完,无论是本地或远程就很难对其进一步操作。也正是因为这样,任何一端的用户只能改变图像上的某些像素,如果想对图像中的某些对象进行即时性的修改,是不可能的。因此,对所画的图像中的对象只是单向的传输,而没有实现对图像中的任何对象的属性进行改变从而形成互动,所以,这些技术不能成为真正意义的画图交互。

另外,如果非要实现某些即时性的画图交互,在现有的技术条件下,可以通过一个客户端允许另一客户端远程登录到他的计算机上,并且分享他的操作权限,从而使远程的客户端在这台计算机上与该计算机的人员进行画图交流。但这有几个问题:

传输数据量极大:因为这两台电脑分享屏幕,所以传输的是每一帧的整个屏幕的像素,一分钟就可以达到几百兆的传输量。

分享同样的权限不安全:因为本地终端需要分给远程登录终端同样的权限,远程终端可以对本地机进行任何操作,那么这就存在潜在的安全危险。

即使可以在同一图像框架下画图,因为不是按对象操作,一旦一个对象画完,很难再对该对象进行相应的属性修改,导致这种这种交互功能不完整。

不能在台式机和便携式的移动终端(如手机,各种的pad)之间进行。



技术实现要素:

针对以上问题,本发明创造提出一种以面向对象为基础的即时画图交互方法,跳出了传统的图像思维逻辑,不是以像素作为基本单元画图,而是以所画图像的对象作为基本单元。首先,预先定义所要画图对象的基本类型;然后,在画图和图像传输的过程中,都是以图像中的对象为单元进行记录和传输的,从而,能够实现当对象被传输到另一端时,用户完全可以对图像中的对象进行即时性的整体的属性修改,并把这种修改的图形对象再传输回去或传输到其它的终端,从而实现了真正意义上的画图的交流互动,这也是区别于已有的软件或技术的关键。该技术不只是限于两个终端的交互,而是可以应用在多个终端的同时交互的。在接下来的技术描述中,是以两个终端的交互为例。多个终端的交互与两个终端的交互一样,只是数据同时传输到多个其它的终端。

为了实现上述目的,本发明创造采用的技术方案为:以面向对象为基础的即时画图交互方法,其特征在于,将所画的图像对象作为基本单元,其步骤为:

1)预先定义:在各个终端中,预先定义图像对象类型,在定义的类型中,包括定义对象的基本属性;

2)终端用户画图操作:终端用户在画新的图像对象时,需要先选择一个类型,然后在图像中画出具体对象;

3)图形对象名称生成:整个图像中,当一个新的图形对象生成时,名称生成器分给该对象一个唯一的名称进行存储;在本地对象储存器中,将所有的对象以hash的数据结构形式储存,以图形对象的名称作为索引用来查询,每个索引对应的是该图形对象的基本属性;

4)更新本地图形对象存储器:在本地部分设有一个图形对象储存器,在图形对象储存器中存储本地生成的对象数据和网络中其他终端传输过来的数据;当步骤2)中的操作完成时,将所产生的对象数据在存储器中进行存储和更新;

5)数据包:当完成以上操作后,需要对操作的动作和相应的被操作图形对象进行数据打包,一个数据包中包含图像对象的所有基本数据;通过数据包,将本地的操作和被操作的对象的属性变化传递其他终端;在接收端进行解包后,复制同样的操作动作和被操作的对象及其属性的各种变化,对图形对象存储器中的信息进行更新;

6)重新生成图形对象:是在接收端根据数据包的数据,重新构建图形对象及操作动作;

7)更新本地图形对象存储器;各个终端根据接收到的数据包,根据被重新构建的图形对象的名称及操作动作对本地图像对象储存器进行更新;

8)在接收客户端显示图形对象:刷新图像区,将传输过来的图形对象线束在图像区域中。

所述的步骤1)中,图像对象类型由一种或几种几何图形构成。

步骤1)中,图形对象的基本属性包括且不仅包括有图形对象的:位置、尺寸、颜色、线条粗细。

所述的步骤2)中,图形操作类型:具体包括2.1)、2.2)和2.3)三种类型,用户的每次操作图形对象被数据打包的时候,将对应的数据类型写进数据包中:

2.1)画新图像对象:一个终端的用户,首先选择一个图形类型,然后在画图区域画出具体的图形对象;当对象画好之后,确定了该图形对象具体属性值;这样,该对象以这些属性值的形式在图像中被保存;

2.2)修改图形对象:当选定一个或几个对象后,可改变它的属性,修改之后,被修改的图形对象以被更新的属性值在图像中保存;

2.3)删除图形对象:当用于选定一个或几个图像中的图形对象后,对其进行删除,对应的图形对象在图像中就消失;该动作被记录,在打数据包时,把删除的对象的名称打包,传输到其它客户端更新图像。

所述的步骤4)更新本地图形对象存储器的具体更新方法如下:

4.1)针对步骤2.1):画了新的图形图像,先由名称生成器产生一个新的对象名称,该名称生成器保证生成的名称不会与现有的数据对象的名称重复,然后,以该名称为索引,存储该对象的全部属性数据在本地图形对象存储器中;

4.2)针对步骤2.2):更新图像中已有的对象,根据该对象的名称,在本地图形对象存储器中查找到该对象,然后,在存储器中更新该对象的属性;如果查找不到,则报错;

4.3)针对步骤2.3):删除图像中的某个对象,先在该存储器中根据对象的名称,查找到该对象,然后在存储器中删除该对象及其索引名称;如果查找不到,则报错。

所述的步骤5)中的数据包由以下数据块组成:

5.1)对象名称:当前所画的,或所选的图形对象的名称,无论开发者如何定义图形类型,其必须要包括对象名称,否则,没有办法查询所被操作的对象;

5.2)操作对象类型:操作包括三种类型:画新图形对象;修改已有的图形对象;删除已有的图形对象;

5.3)图形对象类型;

5.4)修改操作对象类型:只用于修改已有图形对象的操作类型,具体为以下几个类型:选择对象,取消选择对象,属性修改,没有操作;当操作对象类型不是修改图形对象时,该部分为空;

5.5)图形对象属性值:如果该图形操作时画新图形对象,这个数据块要包括新对象的所有属性数据;如果该图形操作是更新图像对象,那么该数据块可以只包括该图形对象需要更新的那部分属性,也可以包含该对象在对象存储器中的全部属性值;如果是删除操作类型,该部分可以为空。

所述的数据包被传输到任何一个其它终端的时候,首先,它将进入到一个数据包的存储器中,按照先后顺序在这里排队等待处理;而当解包的线程空闲时,就到数据包存储器中,按顺序处理存储器中的每个数据包。

所述的数据包通过数据包解析器进行解析,数据包解析器负责从数据包存储器中按照现有顺序,一个一个的提取数据包并解包,提取时,需提取出数据包里包含的所有基本数据内容。

步骤6)中具体为:在步骤分5)步完成后,数据包中的各个数据块中的值都被提取出来,操作动作和被操作的图形对象的属性值也都被提取出来,根据操作类型做以下工作:

9.1)构建新图形对象:如果是构建行图像对象,首先要查找新对象的名称是否在该终端存在,如果存在,报错;如果不存在,则根据属性构建新图形对象。

9.2)更新图形对象:同样的,首先要查找该对象的名称是否存在,该名称在该终端存在,更新该图形对象的属性;否则,报错。

9.3)删除图形对象:首先要查找该对象的名称是否存在,该对象存在,在本终端删除该对象;否则,报错。

本发明的有益效果为:

1)所构建图像的对象单元化:在任何一个终端,因为应用该方法构建的图像是以图形对象为基本单元,因此不需要任何图像分割法来分割图像来提取图像中的某些内容。相反,用户可以直接的选取图像中的任意对象进行组合,修改等操作。这为图像的编辑提供了极大的灵活性和便利。

2)交互性:正是因为传输的是图像中的对象而不是像素,这使得在网络中用户之间对同一图像中的对象的交互操作成为可能。任何一个用户画出的图形对象传输到其他客户端后,客户端的用户就可以控制,修改和删除这些对象,从而达到多个用户在一个网络平台上实现真正意义的图像交互的目的。

3)传输数据量小:因为传输的是对象的属性值,而不是所有的像素,而且对于大多数的对象的属性值的数据量都是远远小于相对应的图像上的所占有像素值的数据量的,因此,传输的数据大幅的降低,从而大幅降低对带宽的要求,并且不会影响图像的质量。

4)即时性:因为传输的数据量小,即使跟视频或者远程登录其它电脑的方式相比,本技术的时间延迟要小,即时性很强。

5)画图和传输图像的多样性和可扩展性:因为要所要画的不同的对象类型可以根据用户的需求定义,因此,对象的类型具有多样性和可扩展性。

6)而这一技术,不单单可以应用在二维图像上,还可以应用在三维图像上。

7)安全性:因为只是传输图像内的操作对象,而不存在分享本地操作权限的问题,所以,单纯就本技术来讲,大大提高了安全性。

8)跨平台交互:只要在相应的操作系统应用本技术开发相应的软件,并且访问同一个服务器,并在本地终端安装相应的软件,就可以实现在多种平台上(无论是台式机,还是手机或pad,甚至是定制的嵌入式设备)同时交互。

附图说明

图1:发送端数据处理流程示意图。

图2:接收端数据处理流程示意图

图3:数据包的所需要包含的基本数据示意图。

图4:两个终端网络交互的简化示意图

具体实施方式

1)定义对象类型:在各个终端,要有预先定义的图形对象的类型,比如直线,曲线,矩形,圆形等。在这些类型中,包括定义对象的基本属性,例如:位置,尺寸,颜色,线条粗细等。这些图形对象类型是由开发者定义的,这些类型既可以是一些基本的图形类型,也可以是某些类型组合而成的复杂的图形类型。终端的用户在画新的图形对象时,首先需要选择一个类型,然后才可以在图像中画出具体的对象。在接受数据包的过程中,也需要根据对象类型来解包,并在接收端根据对象的属性,重新构建或更新图形对象。进一步引申,照片,文件,甚至是视频也都可以看作一个对象,它们可以被加载到上面提到的某些基本图形(例如矩形)中,然后以这个加载照片或文件或视频的矩形为对象进行下面提到的一些操作。在后面的举例说明部分,会有更详细的叙述。

另外,当前有很多技术能够从照片中提取各种各样图像,那么所提取出来的对象,都可以看作所要传输和操作的一个对象。

因为定义对象类型早已在很多画图软件中实现,因此如何定义一些基本对象不在本专利申请保护的范围内。这里陈述是因为需要这个步骤。

2)图形操作类型:以下三种操作为对图像对象的操作类型,用户的每次操作图形对象被数据打包的时候,对应的数据类型都需要写进数据包内(参考附图1的数据包的基本定义)。这里是对其操作的具体描述:

2.1)画新图像对象:一个终端的用户,首先选择一个图形类型,然后在画图区域画出具体的图形对象。当对象画好之后,该图形对象具体属性值也就确定,这样,该对象以这些属性值的形式在图像中被保存,而不是以该对象在图像中所占有的像素值作为保存对象的。因此,一个图形对象有可能跟它所占有的像素多少无关,主要是看该对象的类型是怎么定义的。

2.2)修改图形对象:因为图象是以图形对象为单位进行保存的,所以用户可以非常方便的在图像中选取任何已有的图形对象。当选定一个或几个对象后,用户就可以修改它们的属性了,例如,改变它们在图像中的位置,或颜色,线条的粗细等。修改之后,被修改的图形对象就以被更新的属性值在图像中保存。

2.3)删除图形对象:同样的,当用选定一个或几个图像中的图形对象后,可以删除它(们),这样,对应的图形对象在图像中就消失了。但该动作会被记录,以便在打数据包的时候,把删除的对象的名称打包,传输到其它客户端更新图像。

3)图形对象名称生成器:为了图像中的图形对象容易识别和查询,在接下来介绍的本地对象存储器中,所有的对象是以hash的数据结构的形式存储的,即以图形对象的名称作为索引用来查询,每个索引对应的是该图形对象的各种属性。因此,整个的图像中,任何一个图形对象的名称是不能重复的。图形对象名称生成器的作用就是保证生成不重复的对象名称,当一个新的图形对象生成时,该名称生成器分配给它独一无二的名称来存储。

4)更新本地图形对象存储器:软件在本地部分有一个图形对象存储器,其作用就是存储图像中所有的图形对象的数据。这包括在本地生成的对象数据,也包括从网络的其它终端传输过来的数据。存储的数据结构是hash结构,当任何一个在第2步骤中的操作完成时,其所产生或修改的对象属性的数据就会在本的的对象存储器内更新,具体的更新方法是:

4.1)如果是画了新的图形图像(步骤2.1),先由名称生成器产生一个新的对象名称,该名称生成器保证生成的名称不会与现有的数据对象的名称重复,然后,以该名称为索引,存储该对象的全部属性数据在本地图形对象存储器中;

4.2)如果是更新图像中已有的对象(步骤2.2),根据该对象的名称,在本地图形对象存储器中查找到该对象,然后,在存储器中更新该对象的属性;如果查找不到,则程序需要报错。

4.3)如果是删除图像中的某个对象(步骤2.3),同样需要现在该存储器中根据对象的名称,查找到该对象,然后在存储器中删除该对象及其索引名称;如果查找不到,则程序报错。

5)生成数据包:当以上2-4步的操作完成1个或几个操作之后,软件需要对操作的动作和相应的被操作的图形对象进行数据包打包。图2定义了一种数据包的所需要包含的基本数据。数据包的作用就是传递本地的操作和被操作的对象的属性变化,到其它的网络终端。从而,在其它终端解包之后,能够复制同样的操作动作和被操作的对象及其属性的各种变化。数据包主要由以下几个数据块组成,具体如图3所示:

5.1)对象名称:就是当前所画的,或是所选的图形对象的名称。无论开发者如何定义图形类型,其必须要包括对象名称。否则,没有办法查询所被操作的对象。

5.2)操作对象类型:操作包括三种类型:画新图形对象;修改已有的图形对象;删除已有的图形对象。

5.3)图形对象类型:如果操作对象类型是画新图形对象,这个数据块定义画哪种图形类型,在第1步的定义对象类型中已经具体说明了什么是定义的图形类型。

5.4)修改操作对象类型:只用于修改已有图形对象的操作类型。其可以有以下几个类型:选择对象,取消选择对象,属性修改,没有操作。当操作对象类型不是修改图形对象时,该部分就可以为空。

5.5)图形对象属性值:如果该图形操作时画新图形对象,这个数据块要包括新对象的所有属性数据。如果该图形操作是更新图像对象,那么该数据块可以只包括该图形对象需要更新的那部分属性即可;当然也可以包含去该对象在对象存储器中的全部属性值,这取决于软件设计人员的情况而定。如果是删除操作类型,该部分可以为空。

6)传输数据包:数据包打包完成后,就可以从该客户端传输出去。传输可以直接传输到其它客户端,或采用服务器—客户端的形式,先传输到服务器,然后再由服务器分发到其它客户端。图1,即画图构建数据包过程就是更形象的表示步骤1-6的过程。

7)客户端的数据包存储器:当一个数据包被传输到任何一个其它终端的时候,首先,它将进入到一个数据包的存储器中,按照先后顺序在这里排队等待处理。这样做的目的是:保存传输过来的没被解包的任何数据包,防止数据丢失。当一个数据包到达一个终端的时候,这个终端的解包线程有可能正在处理上一个数据包,或进行一些本地的其它计算,而没有时间处理刚被传输过来的数据包。有这样一个数据包存储器,正好来保存传输过来的数据,而当解包的线程忙完当前的计算后,再按顺序处理存储器中的每个数据包。这也能保证传输过来的数据的顺序正确。

8)数据包解析器:数据包解析器负责从数据包存储器中一个一个的提取数据包并解包,提取该包的数据。对于每个数据包,解包就是根据步骤5,把数据包里所包含的基本数据内容都提取出来。

9)重新生成图形对象:在第8步完成后,数据包中的各个数据块中的值都被提取出来,这样,操作动作(步骤2)和被操作的图形对象的属性值也都被提取出来,根据操作类型做一下工作:

9.1)构建新图形对象:如果是构建行图像对象,首先要查找新对象的名称是否在该终端存在,如果存在,则报错;如果不存在,则根据属性构建新图形对象。

9.2)更新图形对象:同样的,首先要查找该对象的名称是否存在,不同于a的是,只有该名称在该终端存在,才能更新该图形对象的属性,否则,要报错。

9.3)删除图形对象:与上步9.2类似,首先要查找该对象的名称是否存在,只有该对象存在时,才在本终端删除该对象,否则要报错。

10)更新本地图形对象存储器:就像步骤5中介绍的那样,每个客户端都有本地图形对象存储器,当步骤9完成后,根据被重新构建的图形对象的名称以及操作动作,需要在该终端的本地存储器中更新图形对象及其属性。更新的方法跟步骤4中介绍的一样,在这里就不再重复。

11)在接收客户端显示图形对象:当以上步骤完成后,程序刷新图像区,那么被传输过来的图形对象就会显示在图像区域中,如果是删除对象,那么该对象就会在图像区域中被删除。图2则更直观的描述了步骤7~11的过程。

实施例1:

1)为了更具体的说明本技术,如图4所示,以下以在网络中的两个终端为例,描述应用该技术进行图像交互交流的过程。在实际应用中,可以多个终端同时进行交互交流。

在终端a,用户选择了矩形类型,然后在画图界面用鼠标画了一个矩形,其具体属性如下:

名称:a_rectangle1(由图像对象名称生成器产生)

坐标:左上角顶点:(10,10),右下角顶点:(210,180)

边框线:实线;粗细:2pt;颜色:黑色

颜色是否填充全部矩形:是

从以上的对象属性,我们可以知道,该矩形的尺寸是:长200,宽170,矩形的中间都被填充黑色。虽然,该矩形在图像中占用了200*170=34000个像素,但在一个64位的计算机上,按以上的定义,该矩形对象在内存中所占用的空间大概是:16(名称,字符串)+2*2*4(坐标,int类型)+4(边框线类型,int类型)+4(粗细类型,int类型)+16(颜色,int类型)+1(是否填充,boolean类型)=57字节(以用c++编程语言为例)。也就是说,如果按照传统的图像传输的方法,即使是只传输所改变的像素,该操作所要传输的有效数据也要34000*16=544000个字节,即544k的数据量,而应用本专利,只需要传输大概57个有效字节,可见,当传输用户自定义的图形类型时,本专利提高传输效率可达上万倍。

2)当用户用鼠标构建了以上的那个矩形,其对应的属性就被存储在本地的对象存储器中,其索引为由名称生成器所产生的名称a_rectangle1。如果以后用户想要修改该对象的任何属性,用户只要在图像中用鼠标点击该矩形内的任何位置,根据鼠标的坐标和该矩形的坐标(由左上角和右下角界定)通过本地图形的对象存储器,就可以查询到该对象,从而选择到该对象。

3)用户在a端完成创建该矩形操作后,根据在该矩形在对象存储器的数据,程序就可以对该对象进行数据打包。打包需要包含的基本数据遵循技术实现方法部分中的步骤5的介绍。在这里,该数据包的基本数据如下:对象名称:a_rectangle1;操作对象类型:创建新对象;预定义图形类型:矩形;修改操作对象类型:空;图形对象属性值:在本地的对象存储器中该对象的所有数据,即在步骤1中的该矩形的数据。

4)打包之后,该数据包就通过网络,传输到其它终端,在这个例子中为b端。

该数据包到达b终端后,首先进入数据包存储器中排队。即先到该端的数据排在前,后到的排在后。

5)当数据包解析器从数据包存储器中提到该矩形数据包后,对其进行解包,提取该包的数据。

6)提取数据后,首先根据操作对象类型以及数据属性等信息,重新构建该矩形对象,并存储在b端的本地的图形对象存储器中。

7)最后在b端的图形界面显示该新的矩形图形。

8)以上是用户在a端画新矩形对象,即时传输到b端的过程。接下来继续以这个为例,进一步的操作。

9)此时,如果b端已经显示了由a端用户画的矩形,这时,如果b端用户想修改该矩形对象,根据第2步的说明,当选择该对象后,该用户可以改变除名称外的各种属性,例如:改变该矩形的位置(可以用鼠标拖着该矩形对象到新的位置),比如新位置是:左上角为(50,25),那么右下角的坐标就是(250,195),即向左移动40像素,向下移动15个像素。

10)这样,类似于第3步,这里b端只需要把该矩形被更改的属性(即坐标)打包即可,具体为:对象名称:a_rectangle1;操作对象类型:修改已有的图形对象;预定义图形类型:矩形;修改操作对象类型:属性修改;图形对象属性值:坐标:左上角(50,25),右下角(250,195)。

11)接下来的步骤与4-6的步骤相同,只不过是从b端传输到a端。

12)在a端当数据包解析器提取该包的数据后,首先根据该数据的名称a_rectangle1,在a端的本地对象存储器中查找该对象是否存在。如果存在,则用新的坐标替换该对象在对象存储器中的坐标值;否则,没有找到该对象名的话,程序要报告错误,同时该数据包也将被抛弃掉。

13)当数据在a端的对象存储器内更新后,最后在用户图像界面更新图像。这样,这就实现了b端用户修改该图像对象,并即时的该修改的内容传输到a端。

以上1-13的步骤就是一次简单但完整的即时性的两个客户端构建及修改对象的过程,通过这样一个过程,这两个客户端实现了应用图像进行即时性的交互交流的目的。当然,程序定义的预定义图形对象类型越丰富,并且每个对象的属性越具体,那么为用户提供的功能选择就越多,这样的交流就越精彩。

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