批量移动相邻窗口的方法和系统与流程

文档序号:12362847阅读:354来源:国知局
批量移动相邻窗口的方法和系统与流程

本发明涉及窗口移动技术领域,特别是涉及一种批量移动相邻窗口的方法和系统。



背景技术:

在一些GUI应用程序中,如音视频播放器,通常由多个窗口构成。这些窗口可能相邻或者相离。用户在使用的过程中,当移动一个窗口时,往往希望与该窗口相邻的窗口也能一起移动,避免用户移动多个窗口。



技术实现要素:

本发明所要解决的技术问题是提供一种批量移动相邻窗口的方法,可实现相邻窗口的批量移动。

本发明所要解决的另一技术问题是提供一种批量移动相邻窗口的系统,可实现相邻窗口的批量移动。

为了解决上述的技术问题,本发明的技术方案如下:

一种批量移动相邻窗口的方法,包括:获取一窗口的相邻窗口集;移动该窗口,则该窗口的相邻窗口集中的其他窗口跟随该窗口移动。

进一步,在所述获取一窗口的相邻窗口集的步骤之前还包括:初始化相邻窗口矩阵,所述初始化相邻窗口矩阵的步骤包括:依次判断窗口rw与其他任一窗口cw的位置关系;若相邻,则设置相对于其他任一窗口cw的窗口rw的矩阵元素matrix[rw][cw]为1;在判断完窗口rw与其他任一窗口cw的位置关系后,标记该窗口cw为已判断;在未判断的窗口中重复上述过程,直到设置完任意两个窗口之间的矩阵元素。

进一步,所述依次判断窗口rw与其他任一窗口cw的位置关系的步骤包括:根据窗口rw的位置,设定一矩形,所述窗口rw位于所述矩形的中心,所述矩形的长度L=l+m+2,宽度D=d+h+2,其中,l为其他任一窗口cw的长度,d为其他任一窗口cw的宽度,m为窗口rw的长度,h为窗口rw的宽度;判断所述其他任一窗口cw的中心是否位于所述矩形内;若所述其他任一窗口cw的中心位于所述矩形内,则所述其他任一窗口cw与所述窗口rw相邻。

进一步,所述获取一窗口的相邻窗口集的步骤包括:标记所述一窗口为已访问;将与所述一窗口的矩阵元素为1的第二窗口加入到所述一窗口的相邻窗口集中;若所述第二窗口没有标记为已访问,则将所述第二窗口标记为已访问,并查找与所述第二窗口的矩阵元素为1的第三窗口,并将所述第三窗口加入到所述一窗口的相邻窗口集中;递归上述的过程,直到将矩阵元素为1的所有窗口都加入到所述一窗口的相邻窗口集中。

进一步,所述移动该窗口,则其他依次相邻的窗口跟随该窗口移动的步骤包括:获得该窗口的目标移动位置的偏移量;从所述相邻窗口集中获取一其他窗口;获取所述一其他窗口的当前位置;根据该窗口的目标移动位置的偏移量和所述一其他窗口的当前位置,获取所述一其他窗口的目标移动位置;若所述一其他窗口的目标移动位置与所述一其他窗口的当前位置不同,则移动所述一其他窗口到该目标移动位置;重复上述的过程,直到该窗口的相邻窗口集中的所有其他窗口都完成移动。

以及,一种批量移动相邻窗口的系统,包括:获取模块,用于获取一窗口的相邻窗口集;移动模块,用于移动该窗口,则该窗口的相邻窗口集中的其他窗口跟随该窗口移动。

进一步,还包括:初始化相邻窗口矩阵模块,所述初始化相邻窗口矩阵模块包括:第一判断子模块,用于在所述获取一窗口的相邻窗口集的步骤之前,依次判断窗口rw与其他任一窗口cw的位置关系;第一设置子模块,用于若相邻,则设置相对于其他任一窗口cw的窗口rw的矩阵元素matrix[rw][cw]为1;第一标记子模块,用于在判断完窗口rw与其他任一窗口cw的位置关系后,标记该窗口cw为已判断;在未判断的窗口中重复调用上述子模块,直到设置完任意两个窗口之间的矩阵元素。

进一步,所述第一判断子模块包括:矩形设定单元,用于根据窗口rw的位置,设定一矩形,所述窗口rw位于所述矩形的中心,所述矩形的长度L=l+m+2,宽度D=d+h+2,其中,l为其他任一窗口cw的长度,d为其他任一窗口cw的宽度,m为窗口rw的长度,h为窗口rw的宽度;第一判断单元,用于判断所述其他任一窗口cw的中心是否位于所述矩形内,若所述其他任一窗口cw的中心位于所述矩形内,则所述其他任一窗口cw与所述窗口rw相邻。

进一步,所述获取模块包括:第二标记子模块,用于标记所述一窗口为已访问;相邻窗口集加入子模块,用于将与所述一窗口的矩阵元素为1的第二窗口加入到所述一窗口的相邻窗口集中;第三标记子模块,用于若所述第二窗口没有标记为已访问,则将所述第二窗口标记为已访问;查找子模块,用于查找与所述第二窗口的矩阵元素为1的第三窗口;所述相邻窗口集加入子模块,还用于将所述第三窗口加入到所述一窗口的相邻窗口集中;递归调用上述的子模块,直到将矩阵元素为1的所有窗口都加入到所述一窗口的相邻窗口集中。

进一步,所述移动模块包括:偏移量获取子模块,用于获取该窗口的目标移动位置的偏移量;其它窗口获取子模块,用于从该窗口的相邻窗口集中获取一其他窗口;当前位置获取子模块,用于获取所述一其他窗口的当前位置;目标移动位置获取子模块,用于根据该窗口的目标移动位置的偏移量和所述一其他窗口的当前位置,获取所述一其他窗口的目标移动位置;移动子模块,用于若所述一其他窗口的目标移动位置与所述一其他窗口的当前位置不同,则移动所述一其他窗口到该目标移动位置;重复调用上述的模块,直到该窗口的相邻窗口集中的所有其他窗口都完成移动。

与现有技术相比,本发明包括以下优点:

1、本发明实施例的方法可实现通过移动任意一个窗口,使得该窗口的相邻窗口集中的窗口可同时跟随该窗口移动。

2、本发明实施例的系统可实现通过移动任意一个窗口,使得该窗口的相邻窗口集中的窗口可同时跟随该窗口移动。

附图说明

图1是本发明实施例的批量移动相邻窗口的方法的流程图;

图2是本发明实施例的初始化相邻窗口矩阵的步骤的流程图;

图3是本发明实施例的依次判断窗口rw与其他任一窗口cw的位置关系的步骤的流程图;

图4是本发明实施例的构建的矩形的示意图;

图5是本发明实施例的初始化相邻窗口矩阵的步骤的具体实施方式的流程图;

图6是本发明实施例的获取一窗口的相邻窗口集的步骤的流程图;

图7是本发明实施例的获取一窗口的相邻窗口集的步骤的具体实施方式的流程图;

图8是本发明实施例的移动该窗口则该窗口的相邻窗口集中的其他窗口跟随该窗口移动的步骤的流程图;

图9是本发明实施例的移动该窗口则该窗口的相邻窗口集中的其他窗口跟随该窗口移动的步骤的具体实施方式的流程图;

图10是本发明实施例的批量移动相邻窗口的系统的结构框图;

图11是本发明另一个实施例的批量移动相邻窗口的系统的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

本发明实施例公开了一种批量移动相邻窗口的方法。本发明的方法可以应用于windows系统。如图1所示,为本发明实施例的批量移动相邻窗口的方法的流程图。具体的,该方法包括如下的步骤:

步骤S101:获取一窗口的相邻窗口集。

步骤S102:移动该窗口,则该窗口的相邻窗口集中的其他窗口跟随该窗口移动。

本发明实施例的方法可实现通过移动任意一个窗口,使得该窗口的相邻窗口集中的窗口可同时跟随该窗口移动。

优选的,在步骤S101之前还包括:初始化相邻窗口矩阵。

具体的,如图2所示,该初始化相邻窗口矩阵的步骤包括:

步骤S201:依次判断窗口rw与其他任一窗口cw的位置关系。

若相邻,则进行步骤S202。

步骤S202:设置相对于其他任一窗口cw的窗口rw的矩阵元素matrix[rw][cw]为1。

本发明中所述的相邻指的是两个窗口相交或者相切。相交指的是一窗口与另一窗口至少部分重叠。相切指的是一窗口与另一窗口刚好挨着。当两个窗口既不相交也不相切时,该两个窗口的位置关系为相离。

步骤S203:在判断完窗口rw与其他任一窗口cw的位置关系后,标记该窗口cw为已判断。

在未判断的窗口中重复上述过程,直到设置完任意两个窗口之间的矩阵元素。

通过上述的过程,可以设置完任意两个窗口之间的矩阵元素。

其中,如图3所示,步骤S201的具体过程如下:

步骤S301:根据窗口rw的位置,设定一矩形A,窗口rw位于矩形A的中心P。该矩形如图4所示。

其中,矩形A的长度L=l+m+2,宽度D=d+h+2,其中,l为其他任一窗口cw的长度,d为其他任一窗口cw的宽度,m为窗口rw的长度,h为窗口rw的宽度。

其中,“+2”中的“2”表示2个像素。该增加2个像素的目的是为了处理两个窗口相切的情况。

步骤S302:判断其他任一窗口cw的中心Q是否位于矩形A内。

若其他任一窗口cw的中心Q位于矩形A内,则进行步骤S303。

步骤S303:判定其他任一窗口cw与窗口rw相邻。

通过上述的具体过程,构建特定的矩形来判断两个窗口之间的位置关系。

具体的,上述的过程可通过设置窗口索引,并通过内外循环结合的方式获得任意两个窗口的位置关系。其中,该内循环的目的是判断窗口rw与其他任一窗口cw的位置关系。该外循环的目的是在判断完窗口rw与其他任一窗口cw的位置关系后,进行另一窗口rw的判断。如图5所示,上述过程可通过如下的具体方式实现:

步骤S501:初始化窗口rw。

步骤S502:判断窗口rw的索引是否小于最大的索引。

若是,则进行步骤S503。若否,则进行步骤S509。

步骤S503:初始化窗口cw。

步骤S504:判断窗口cw的索引是否不大于最大的索引。

若是,则进行步骤S505;否则返回进行步骤S501。

步骤S505:判断窗口rw和窗口cw的位置关系。

若位置关系为相邻,则进行步骤S506;否则进行步骤S507。

步骤S506:设置相对于窗口cw的窗口rw的矩阵元素matrix[rw][cw]为1。

若窗口rw和cw相邻,则matrix[rw][cw]为1,由于对称性,相对于窗口rw的窗口cw的matrix[cw][rw]也为1;反之相离的情况同理。

步骤S507:设置相对于窗口cw的窗口rw的矩阵元素matrix[rw][cw]为0。

同理,对于窗口rw的窗口cw的矩阵元素matrix[cw][rw]也为0。

进行完步骤S506或者S507后,返回步骤S503,再次初始化另一窗口cw,进行步骤S504~S507,直到窗口rw与其他所有窗口cw的位置关系都比较完,该内循环结束循环跳出。

跳出内循环时,返回步骤S501,初始化另一个窗口rw,再次进行上述的过程。

步骤S508:返回。

通过上述的过程,可以使用邻接矩阵来存储窗口间的位置关系。

如图6所示,步骤S101具体包括如下的步骤:

步骤S601:标记一窗口为已访问。

步骤S602:将与一窗口的矩阵元素为1的第二窗口加入到一窗口的相邻窗口集中。

步骤S603:若第二窗口没有标记为已访问,则将第二窗口标记为已访问,并查找与第二窗口的矩阵元素为1的第三窗口,并将第三窗口加入到一窗口的相邻窗口集中。

步骤S604:递归上述的过程,直到将矩阵元素为1的所有窗口都加入到一窗口的相邻窗口集中。

通过上述的过程,遍历了所有的矩阵元素,从中找到矩阵元素为1的所有窗口,并将其加入到一窗口的相邻窗口集中。

具体的,如图7所示,上述的过程可以通过如下的具体的递归方式实现:

步骤S701:标记窗口v为已访问。

步骤S702:获取窗口v的一个相邻窗口w。

相对于窗口w的窗口v的矩阵元素matrix[v][w]为1。

若获取成功,则进行步骤S703,否则进行步骤S711。

步骤S703:将窗口w加入到窗口v的相邻窗口集中。

步骤S704:判断窗口w是否标记为已访问。

若是,则返回进行步骤S702;否则进行步骤S705。

步骤S705:标记窗口w为已访问。

步骤S706:获取窗口w的一个相邻窗口。

若获取成功,则进行步骤S707;否则进行步骤S711。

步骤S707:判断窗口w的相邻窗口是否标记为已访问。

若是,则返回进行步骤S706;否则进行步骤S708

步骤S708:标记窗口w的相邻窗口为已访问。

步骤S709:将窗口w的相邻窗口加入到窗口v的相邻窗口集中。

步骤S710:记窗口w的相邻窗口为窗口w。

在进行步骤S710后,返回进行步骤S706,进行递归的过程,直到将矩阵元素为1的所有窗口都加入到窗口v的相邻窗口集中。

步骤S711:返回。

通过上述具体的过程,采用对查找窗口w的相邻窗口递归的方式,最终将矩阵元素为1的所有窗口都加入到窗口v的相邻窗口集中。

具体的,如图8所示,步骤S102包括如下具体的步骤:

步骤S801:获取该窗口的目标移动位置的偏移量。

步骤S802:从该窗口的相邻窗口集中获取一其他窗口。

步骤S803:获取一其他窗口的当前位置。

步骤S804:根据该窗口的目标移动位置的偏移量和一其他窗口的当前位置,获取一其他窗口的目标移动位置。

步骤S805:若一其他窗口的目标移动位置与一其他窗口的当前位置不同,则移动一其他窗口到该目标移动位置。

重复上述的步骤S802~步骤S805,直到该窗口的相邻窗口集中的所有其他窗口都完成移动。

通过上述的过程,实现该窗口的相邻窗口集中的所有窗口跟随该窗口的移动而移动。

如图9所示,上述过程可以通过如下具体的方式实现:

步骤S901:获取窗口v的任一角到该角的目标移动位置的偏移量(x,y)。

例如,窗口v的任一角为左上角。

步骤S902:从窗口v的相邻窗口集中获取一窗口w。

步骤S903:判断是否已到达相邻窗口集的末尾。

若是,则进行步骤S908;否则进行步骤S904。

步骤S904:获取窗口w的与窗口v的任一角相应的任一角的当前坐标(a,b)。

例如,窗口v的任一角为左上角,则相应的窗口w的任一角也为左上角。

步骤S905:获取窗口w的任一角的目标移动位置的目标坐标为(a+x,b+y)。

步骤S906:判断窗口w的任一角的当前坐标与窗口w的相同角的目标坐标是否相同。

若不同,则进行步骤S907;否则返回进行步骤S902,重复上述的过程,直到窗口v的相邻窗口集中的所有其他窗口w都完成移动。

步骤S907:移动窗口w直到窗口w的任一角的当前坐标为(a+x,b+y)。

步骤S908:返回。

通过上述具体的过程,以窗口的任一角的位置为标准进行判断,从而可通过移动一窗口而将该窗口的相邻窗口集中的所有其他窗口移动。

本发明实施例还提供了一种批量移动相邻窗口的系统。如图10所示,为本发明实施例的批量移动相邻窗口的系统的结构框图。

该批量移动相邻窗口的系统包括:

获取模块101,用于获取一窗口的相邻窗口集。

移动模块102,用于移动该窗口,则该窗口的相邻窗口集中的其他窗口跟随该窗口移动。

本发明实施例的批量移动相邻窗口的系统可实现通过移动任意一个窗口,使得该窗口的相邻窗口集中的窗口可同时跟随该窗口移动。

如图11所示,为本发明另一个实施例的批量移动相邻窗口的系统的结构框图。

优选的,该系统还包括:初始化相邻窗口矩阵模块103。初始化相邻窗口矩阵模块103包括:

第一判断子模块1031,用于在获取一窗口的相邻窗口集的步骤之前,依次判断窗口rw与其他任一窗口cw的位置关系。

第一设置子模块1032,用于若相邻,则设置相对于其他任一窗口cw的窗口rw的矩阵元素matrix[rw][cw]为1。

第一标记子模块1033,用于在判断完窗口rw与其他任一窗口cw的位置关系后,标记该窗口cw为已判断。

在未判断的窗口中重复调用上述子模块,直到设置完任意两个窗口之间的矩阵元素。

通过上述的模块设计,可以设置完任意两个窗口之间的矩阵元素。

优选的,第一判断子模块1031包括:

矩形设定单元1031-1,用于根据窗口rw的位置,设定一矩形,窗口rw位于矩形的中心。

其中,矩形的长度L=l+m+2,宽度D=d+h+2,l为其他任一窗口cw的长度,d为其他任一窗口cw的宽度,m为窗口rw的长度,h为窗口rw的宽度。

第一判断单元1031-2,用于判断其他任一窗口cw的中心是否位于矩形内。

若其他任一窗口cw的中心位于矩形内,则其他任一窗口cw与窗口rw相邻。

通过上述的模块设计,构建特定的矩形来判断两个窗口之间的位置关系。

优选的,获取模块101包括:

第二标记子模块1011,用于标记一窗口为已访问。

相邻窗口集加入子模块1012,用于将与一窗口的矩阵元素为1的第二窗口加入到该一窗口的相邻窗口集中。

第三标记子模块1013,用于若第二窗口没有标记为已访问,则将第二窗口标记为已访问。

查找子模块1014,用于查找与第二窗口的矩阵元素为1的第三窗口。

则,相邻窗口集加入子模块1012,还用于将第三窗口加入到一窗口的相邻窗口集中。

递归调用上述的子模块,直到将矩阵元素为1的所有窗口都加入到一窗口的相邻窗口集中。

通过上述的模块设计,遍历了所有的矩阵元素,从中找到矩阵元素为1的所有窗口,并将其加入到一窗口的相邻窗口集中。

优选的,移动模块102包括:

偏移量获取子模块1021,用于获取该窗口的目标移动位置的偏移量。

其它窗口获取子模块1022,用于从该窗口的相邻窗口集中获取一其他窗口。

当前位置获取子模块1023,用于获取一其他窗口的当前位置。

目标移动位置获取子模块1024,用于根据该窗口的目标移动位置的偏移量和一其他窗口的当前位置,获取一其他窗口的目标移动位置。

移动子模块1025,用于若一其他窗口的目标移动位置与一其他窗口的当前位置不同,则移动一其他窗口到该目标移动位置。

重复调用上述的模块,直到该窗口的相邻窗口集中的所有其他窗口都完成移动。

通过上述的模块设计,实现该窗口的相邻窗口集中的所有窗口跟随该窗口的移动而移动。

综上,本发明另一个实施例的批量移动相邻窗口的系统可实现通过移动任意一个窗口,使得该窗口的相邻窗口集中的窗口可同时跟随该窗口移动。

以上对本发明所提供的技术方案,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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