一种分层处理操作对象的方法及应用的制作方法

文档序号:6581767阅读:230来源:国知局
专利名称:一种分层处理操作对象的方法及应用的制作方法
技术领域
本发明涉及图像显示技术领域,特别是涉及一种分层处理操作对象的方法及应用。
背景技术
随着计算机应用的普及,计算机绘图越来越普遍,涉及到美术、设计、教育、军事、 会议等领域,对对象的操作已经成为绘图过程中的一个重要环节,具体包括对对象的移动、 旋转、拉伸等。 现有技术中,主要通过在显卡上直接操作的方式来完成对对象的操作,即把所要 画的东西直接画到显卡上,采用在DC (Device Context设备场境)上画的方式,首先根据屏 幕的窗口句柄获取屏幕的DC,然后就在DC上进行所有对象的绘画。这样不仅会出现频繁的 显卡切换,而且显卡切换会消耗很多的CPU资源,导致刷新速度比较慢,另外也容易出现屏 幕闪动的现象。同时,随着对象个数的增多,刷新的区域也越来越大,因此对对象的操作就 需要不停的对计算机的显卡进行切换,从而导致对象的操作速度和效率下滑,导致软件使 用不方便,甚至很难使用。

发明内容
本发明的目的在于克服现有技术的缺点和不足,提供了一种分层处理操作对象的 方法,简单、准确的完成对对象的操作,还具有占用CUP资源少、图像刷新速度快、软件兼容 性好的优点。 本发明目的是通过下述技术方案实现的,一种分层处理操作对象的方法,如图1
所示,包括以下步骤 创建3个内存DC; 在第一个内存DC中画上背景; 用户在桌面选择n个操作对象(n为正整数),其中按选中的操作对象位置的高低
顺序,分别为操作对象1、操作对象2、操作对象3........操作对象n ;(最高层的为操作对
象l,最底层的为操作对象n);查找操作对象n下面的所有对象,并创建存放有操作对象n 下面的所有对象数据及位置关系的列表Listn ; 把第一内存DC上的整个背景画在第二内存DC中,再把Listn的对象按原来位置 顺序画在第二个内存DC上; 根据用户在桌面对对象进行的操作,计算需刷新的区域A,并在需刷新的区域A内 查找相邻操作对象间的所有对象和查找最上层操作对象1上面的所有对象,将这些对象数 据及位置关系存放于新创建的不同列表List O到列表List n-1中; 根据刷新区域A的位置及大小,将第二个内存DC上对应的区域画在第三个内存DC 上,把操作后的n个操作对象及列表List O到列表List n-1中的对象按原来的顺序画在 第三个内存DC上;
把第三内存DC上的画面画到屏幕DC的相应区域上,屏幕DC其它区域的画面保持不变。 为更好的实现本发明,所述内存DC为页面大小,一直保存在系统内存中。
所述背景为颜色或/和图片。 所述用户在桌面选择的操作对象,具体为,若用户选择多个位置上下相连的操作
对象,则把这多个位置上下相连的操作对象作为一个操作对象处理。 所述列表List为链表,用于存放除操作对象外的其它对象的数据及位置关系。 所述计算需刷新的区域A,具体是指计算出各操作对象进行操作过程中涉及的全
部区域,即各操作对象操作前所在的区域、操作后所在的区域及操作过程中经过的区域的并集。 所述计算需刷新的区域A还可以是距形,具体为包括各操作对象操作前所在的区域、操作后所在的区域及操作过程中经过的区域的最小距形。 所述在需刷新的区域A内查找相邻操作对象间的所有对象和查找最上层操作对象1上面的所有对象,将这些对象数据及位置关系存放于新创建的不同列表List 0到列表List n-1中,具体是指在需刷新的区域A范围内查找操作对象n与操作对象n-l间的所有对象,创建存放操作对象n与操作对象n-1间的所有对象数据及位置关系的列表List
n_l,......,查找操作对象2与操作对象1间的所有对象,创建存放操作对象2与操作对象
1间的所有对象数据及位置关系的列表List l,查找操作对象1上面的所有对象,创建存放操作对象1上面的所有对象数据及位置关系的列表List 0。 所述把列表List O到列表List n-1中的对象按原来的顺序画在第三个内存DC上,具体是把列表List O到列表List n-1中的对象在刷新区域A范围内的内容按原来位置顺序画在第三个内存DC上。 本发明的目的还在于在计算机绘图中的图像显示应用上述方法。将本发明方法应用于计算机绘图中的图像显示,可以加速计算机图像的显示、响应速度且不影响绘图的显示效果。
本发明与现有技术相比,具有以下优点与有益效果 第一、快速提高计算机对对象的处理能力,如移动、旋转、拉伸对象等,应用本发明方法,把图像中对对象操作的处理操作,位置的变换等均在内存中进行,在内存中进行切换,只是把最后切换后的图片显示到桌面,这样一方面避免对显卡进行频繁的切换,大大的延长显卡的使用寿命,另一方面也有效的提高了绘图中计算机的刷新速度,更好的满足应用需求。 第二、由于主要的切换是在内存中进行,而不是在显卡中进行,因此可以有效的减少CPU资源的消耗,提高了反应速度的同时,也提高了软件的兼容性、易用性。
第三、由于用户对对象的操作只是涉及一小区域范围内图像的改变,因此只需对桌面内的图像有改变的区域进行刷新,而不需要对整个的桌面页面重新刷新。而本发明通过求出需刷新的区域A,然后把区域A上面涉及的全部非操作对象及进行操作后的操作对象按原顺序画上后再显示到桌面中,而且涉及的对象也只是画区域A范围内的部分,即有的非操作对象部分在区域A范围内,有的部分在区域A范围外,也只是画区域A范围内的部分,区域A范围外的不需要画,这样可以有效的提高刷新速度,同时也不影响图像的显示效
5果。


画在第三
域画在第
图1是本发明一种分层处理操作对象的方法流程图2实施例1应用本发明一种分层处理操作对象的方法流程图3是在第一个内存DC中画上背景图片的示意图4是实施例一中用户选中操作对象"叉"的示意图5是实施例一中第二个内存DC画上背景及List 1对象后的示意图6是实施例一中对对象进行移动操作的示意图7是实施例一中根据刷新区域A的位置及大小,将第二个内存DC上对应的区域
个内存DC上的示意图8是实施例一中在第三个内存上画上操作对象的示意图9是实施例一中在第三个内存上画上列表List 0对象的示意图IO是实施例二中用户选中操作对象"叉"及"三角形"的示意图; 图11是实施例三中用户选中操作对象"三角形"及"五角星"的示意图; 图12是实施例三中第二个内存DC画上背景及List 2对象后的示意图; 图13是实施例三中对对象进行旋转操作的示意图14是实施例三中根据刷新区域A的位置及大小,将第二个内存DC上对应的区 三个内存DC上的示意图15是实施例三中在第三内存DC上画操作对象"五角星"的示意图; 图16是实施例三中在第三个内存上画上列表List 1对象的示意图; 图17是实施例三中在第三内存DC上画操作对象"三角形"的示意图; 图18是实施例三中在第三个内存上画上列表List 0对象的示意图。
具体实施例方式
下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不 限于此。 实施例一 本实施例一以用户选择1个操作对象,并对其进行移动操作为例对本发明方法进 行介绍,具体内容如下 S1、见流程2,创建3个页面大小并一直保存在系统内存中的内存DC;
S2、在第一个内存DC中画上背景图片,见图3 (本实施例中为了取得更好的图像显 示对比效果,电脑桌面采用白色背景,实际应用中当然可以是各种色彩图片等),可通过调 用GDI+中的CreateCompatibleDC函数来创建; S3、用户在桌面选择1个操作对象,并判断是否有选中对象,若是则进入S4,否则 返回S2 ; S4、查找操作对象下面的所有对象,并创建存放有操作对象下面的所有对象数据 及位置关系的列表List l;所述列表List l为链表,用于存放操作对象下面的所有对象数 据及位置关系;本实施例中,见图4,用户的选中对象为"叉",将该对象下面的所有对象即"椭圆"、"五角星"存放于Listl中; S4、把第一内存DC上的整个背景画在第二内存DC中,再把List 1的对象按原来位置顺序画在第二个内存DC上,见图5 ; S5、判断用户是否正在操作对象,若是,则进入S6,若不是,则返回S3 ;
S6、根据用户在桌面对对象进行的操作,计算需刷新的区域A(是计算出操作对象进行操作过程中涉及的全部区域,即操作对象操作前所在的区域、操作后所在的区域及操作过程中经过的区域,所述需刷新的区域A为包含上述区域的最小距形,见图6,对对象进行移动操作,刷新区域A以移动操作对象"叉"后产生,根据移动前的区域(实线)和移动后的矩形区域(虚线)计算出需刷新的区域A),并在需刷新的区域A内查找操作对象上面的所有对象,将这些对象数据及位置关系存放于新创建的列表List 0(操作对象上面的所有对象列表List 0包括"三角形"和"勾"); S8、根据刷新区域A的位置及大小,将第二个内存DC上对应的区域画在第三个内存DC上(见图7),把操作后的操作对象及列表List O对象在刷新区域A范围内的内容按原来的顺序画在第三个内存DC上(见图8、图9);为了提高刷新速度,只画列表List 0对象在刷新区域A范围内的部分,在刷新区域A范围外的部分不需要画;
S9、可选择使用GDI+中的Bitblt,把第三内存DC上的画面画到屏幕DC的相应区域上,屏幕DC其它区域的画面保持不变。 S10 :判断鼠标是否已经弹起,是进入Sll,否则进入S5 ;
Sll :结束进程。
实施例二 本实施例二以用户选择2个位置上下相连的操作对象,并对其进行移动操作为例对本发明方法进行介绍,具体内容如下 Sl、创建3个页面大小并一直保存在系统内存中的内存DC ; S2、在第一个内存DC中画上背景图片,可通过调用GDI+中的CreateCompatibleDC函数来创建; S3、用户在桌面选择2个位置上下相连的操作对象,并判断是否有选中对象,若是则进入S4,否则返回S2; S4、查找操作对象下面的所有对象,并创建存放有操作对象下面的所有对象数据及位置关系的列表List l;所述列表List l为链表,用于存放操作对象下面的所有对象数据及位置关系;本实施例中,见图IO,用户选中的操作对象为"叉"及与位于其上方的"三角形",将这2个操作对象看作一整体,则该2个操作对象下面的所有对象包括"椭圆"、"五角星"存放于List 1中; 除在以后创建的列表List 0中,其操作对象上面的所有对象就理解为只包括"勾"不包括"三角形"外,下面的其它步骤同实施例一,此处不在重复说明。
实施例三 本实施例三以用户选择2个不相邻的操作对象,并对其进行旋转操作为例对本发明方法进行介绍,具体内容如下 Sl、创建3个页面大小并一直保存在系统内存中的内存DC ; S2、在第 一 个内存DC中画上背景图片,见图3,可通过调用GDI+中的CreateCompatibleDC函数来创建; S3、用户在桌面选择2个不相邻的操作对象,并判断是否有选中对象,若是则进入S4,否则返回S2 ; S4、用户选中的操作对象为"五角星"及"三角形",以"三角形"为操作对象l,"五角星"为操作对象2,查找操作对象2 "五角星"下面的所有对象(即图中的"椭圆形"),并创建存放有操作对象2下面的所有对象数据及位置关系的列表List 2;所述列表List 2为链表,用于存放操作对象2下面的所有对象数据及位置关系;本实施例中,见图ll,将操作对象2 "五角星"下面的所有对象(即"椭圆")存放于List2中; S4、把第一内存DC上的整个背景画在第二内存DC中,再把List 2的对象按原来位置顺序画在第二个内存DC上,见图12 ; S5、判断用户是否正在操作对象,若是,则进入S6,若不是,则返回S3 ;
S6、根据用户在桌面对对象进行的操作,计算需刷新的区域A(是指计算出操作对象1和操作对象2进行操作过程中涉及的全部区域,即操作对象操作前所在的区域、操作后所在的区域及操作过程中经过的区域的并集,见图13,对对象1和操作对象2进行旋转操作,刷新区域A以旋转操作对象1 "三角形"和操作对象2 "五角星"后产生,(实线为操作对象旋转前涉及的区域,虚线为操作对象旋转后涉及的区域,计算出操作对象进行旋转过程中涉及的全部区域,即操作对象旋转前所在的区域、旋转后所在的区域及旋转过程中经过的区域,所述需刷新的区域A为包含上述区域的最小距形),并在需刷新的区域A范围内查找操作对象2与操作对象1间的所有对象,创建存放操作对象2与操作对象1间的所有对象数据及位置关系的列表List l(即只存有"叉"),查找操作对象1上面的所有对象,创建存放操作对象l上面的所有对象数据及位置关系的列表List O(即只存有"勾");
S8、根据刷新区域A的位置及大小,将第二个内存DC上对应的区域画在第三个内存DC上(见图14),把操作后的操作对象1和操作对象2及列表Listl、列表List 0的对象在刷新区域A范围内的内容按原来的顺序画在第三个内存DC上(见图15、图16、图17、图18);为了提高刷新速度,只画列表List 1、列表List O对象在刷新区域A范围内的部分,在刷新区域A范围外的部分不需要画; S9、可选择使用GDI+中的Bitblt,把第三内存DC上的画面画到屏幕DC的相应区域上,屏幕DC其它区域的画面保持不变。 S10 :判断鼠标是否已经弹起,是进入Sll,否则进入S5 ;
Sll :结束进程。 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
8
权利要求
一种分层处理操作对象的方法,其特征在于,包括以下步骤创建3个内存DC;在第一个内存DC中画上背景;用户在桌面选择n个操作对象,其中按选中的操作对象位置的高低顺序,分别为操作对象1、操作对象2、操作对象3、......、操作对象n;查找操作对象n下面的所有对象,并创建存放有操作对象n下面的所有对象数据及位置关系的列表List n;把第一内存DC上的整个背景画在第二内存DC中,再把List n的对象按原来位置顺序画在第二个内存DC上;根据用户在桌面对对象进行的操作,计算需刷新的区域A,并在需刷新的区域A内查找相邻操作对象间的所有对象和查找最上层操作对象1上面的所有对象,将这些对象数据及位置关系存放于新创建的不同列表List 0到列表List n-1中;根据刷新区域A的位置及大小,将第二个内存DC上对应的区域画在第三个内存DC上,把操作后的n个操作对象及列表List 0到列表List n-1中的对象按原来的顺序画在第三个内存DC上;把第三内存DC上的画面画到屏幕DC的相应区域上。
2. 根据权利要求1所述分层处理操作对象的方法,其特征在于,所述内存DC为页面大 小,一直保存在系统内存中。
3. 根据权利要求l所述分层处理操作对象的方法,其特征在于,所述背景为颜色或/和 图片。
4. 根据权利要求1所述分层处理操作对象的方法,其特征在于,所述用户在桌面选择 的操作对象,具体为,若用户选择多个位置上下相连的操作对象,则把这多个位置上下相连 的操作对象作为一个操作对象处理。
5. 根据权利要求1所述分层处理操作对象的方法,其特征在于,所述列表List为链表, 用于存放除操作对象外的其它对象的数据及位置关系。
6. 根据权利要求1所述分层处理操作对象的方法,其特征在于,所述计算需刷新的区 域A,具体是指计算出各操作对象进行操作过程中涉及的全部区域,即各操作对象操作前所 在的区域、操作后所在的区域及操作过程中经过的区域的并集。
7. 根据权利要求1所述分层处理操作对象的方法,其特征在于,所述计算需刷新的区 域A为距形,是包括各操作对象操作前所在的区域、操作后所在的区域及操作过程中经过 的区域的最小距形。
8. 根据权利要求1所述分层处理操作对象的方法,其特征在于,在需刷新的区域A内 查找相邻操作对象间的所有对象和查找最上层操作对象1上面的所有对象,将这些对象数 据及位置关系存放于新创建的不同列表List O到列表Listn-l中,具体是指在需刷新的区 域A范围内查找操作对象n与操作对象n-1间的所有对象,创建存放操作对象n与操作对象n-l间的所有对象数据及位置关系的列表List n-l,......,查找操作对象2与操作对象1间的所有对象,创建存放操作对象2与操作对象1间的所有对象数据及位置关系的列 表List 1,查找操作对象1上面的所有对象,创建存放操作对象1上面的所有对象数据及位 置关系的列表List 0。
9. 根据权利要求l所述分层处理操作对象的方法,其特征在于,所述把列表List 0到列表List n-1中的对象按原来的顺序画在第三个内存DC上,具体是把列表List 0到列表 List n-1中的对象在刷新区域A范围内的内容按原来位置顺序画在第三个内存DC上。
10. —种权利要求1所述分层处理操作对象的方法的应用,其特征在于,所述方法在计 算机绘图中的图像显示的应用。
全文摘要
本发明公开了一种分层处理操作对象的方法,包括以下步骤创建3个内存DC;在第一个内存DC中画上背景;用户选择操作对象,查找操作对象下面的所有对象;把第一内存DC上的整个背景画在第二内存DC中,再把操作对象下面的所有对象按顺序画在第二个内存DC上;用户对对象进行操作,计算需刷新的区域A,并在需刷新的区域A内查找相邻操作对象间的所有对象和查找最上层操作对象上面的所有对象,将第二个内存DC上对应的刷新的区域A画在第三个内存DC上,把操作后的操作对象及查找的对象按原来的顺序画在第三个内存DC上;把第三内存DC上的画面画到屏幕DC的相应区域上。本发明具有简单、快速、准确和占用CUP资源少的优点。
文档编号G06T11/80GK101706970SQ20091019416
公开日2010年5月12日 申请日期2009年11月25日 优先权日2009年11月25日
发明者陈先志 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1