本发明涉及一种界面刷新,具体为一种解决界面重复刷新问题的系统及方法。
背景技术:
1、在界面移动刷新时,通常需要将对话框父类区域进行层层递归刷新,刷新面积为所有父类区域面积叠加之和(一般叠加结果与屏幕大小相同),存在重复刷新区域的现象,例如,参考图5,在将对话框s移动到对话框s2时,对话框移动影响的区域面积为s1,目前现有技术的方法需要先刷新一次对话框s2,再刷新一次对话框移动影响的区域面积为s1,这样就重复刷新了一次对话框s2的区域面积;
2、这只是对于移动一个对话框而言,若需要在一个父窗口中移动多个子窗口的情况,就会出现重复刷新很多次的子窗口区域面积的情况;对于系统资源较不充足或对于cpu等硬件资源较差的系统,会出现界面卡顿等现象,极大影响用户操作体验,提高产品的生产成本;
3、现有技术已经不能满足现阶段人们的需求,基于现状,急需对现有技术进行改进。
技术实现思路
1、本发明的目的在于提供一种解决界面重复刷新问题的系统及方法,以解决上述背景技术中提出的问题。
2、一方面,本发明提供如下技术方案一种解决界面重复刷新问题的系统,包括:
3、窗口移动模块move,用于通过坐标的方式记录移动窗口的位置;
4、当前窗口刷新模块update,用于对当前窗口进行重新绘制刷新,当所述当前窗口刷新模块update没有参数时,对整个窗口进行重绘刷新;
5、窗口部分区域刷新模块up-qregion,用于对当前窗口的话框中的部分区域进行重新绘制刷新;
6、窗口立即刷新模块repaint,用于立即对当前窗口进行立即重新绘制刷新,范围为整个对话框;
7、窗口部分区域立即刷新模块re-qregion,用于立即对当前窗口的部分参数区域进行立即重新绘制刷新。
8、另一方面,本发明还提供如下另技术方案一种解决界面重复刷新问题的方法,步骤包括:步骤s10:设置窗口父类为空,使得在执行步骤s202时,使窗口通过窗口移动模块move刷新时不会有父类窗口叠加;
9、步骤s20:确定对话框的移动位置;
10、步骤s201:记录对话框的初始位置p1;
11、p1=qpoint(x1,y1);
12、其中,qpoint为qt的一个坐标点类,x1为初始位置的横坐标,y1初始位置的为纵坐标;qt为跨平台的c++图形用户界面应用程序开发框架;
13、步骤s202:调用窗口移动模块move改变对话框位置到p2;
14、p2=qpoint(x2,y2);
15、其中,x2为改变对话框位置后的横坐标,y2为改变对话框位置后的纵坐标;
16、步骤s30:计算对话框区域面积s;
17、s=h*w;
18、其中,h为对话框高度,w为对话框宽度;
19、步骤s40:计算对话框移动影响区域面积s1;
20、s1=(|x2-x1|+w)*(|y2-y1|+h)
21、步骤s50:计算立即刷新区域面积s2;
22、其中,s2为对话框移动方向上突出的部分区域;
23、当|y2–y1|<h并且|x2-x1|<w时;
24、s2=s-(h-|y2–y1|)*(w-|x2-x1|)。
25、当|y2–y1|>h或|x2-x1|>w时,此时立即刷新面积s2为对话框面积s;
26、s2=w*h;
27、步骤s60:调用窗口部分区域刷新模块up-qregion,对除了立即刷新区域s2之外的对话框移动影响区域进行刷新,刷新面积为:s1–s2;
28、步骤s70:调用窗口部分区域立即刷新模块re-qregion,对对话框立即刷新区域s2进行刷新。
29、本发明具有如下有益效果:
30、本发明将窗口父类设为空,使窗口通过窗口移动模块move刷新时不会有父类窗口叠加,不再需要对父窗口和子窗口分别刷新一遍,从而不会出现重复刷新子窗口的现象;
31、本发明调用所述窗口部分区域刷新模块up-qregion,能够将短时间内被多次调用重绘的小事件合并成一个大的重绘事件,不需要重复被调用去反复重绘小事件,减少了刷新次数;
32、本发明调用窗口部分区域立即刷新模块re-qregion,在刷新窗口时具有及时性,不容易出现移动过程中会出现对话框显示不全的现象;
33、本发明将窗口部分区域立即刷新模块re-qregion与窗口部分区域刷新模块up-qregion结合调用,能够放大二者的优点且避免二者的缺点。
1.一种解决界面重复刷新问题的系统,其特征在于,包括:窗口移动模块move、当前窗口刷新模块update、窗口部分区域刷新模块up-qregion、窗口立即刷新模块repaint、窗口部分区域立即刷新模块re-qregion;其中,
2.根据权利要求1所述的一种解决界面重复刷新问题的系统,其特征在于:所述当前窗口刷新模块update被调用之后不会立即重绘,而是发送一个重绘事件,并把所述重绘事件放入事件队列,等待下次事件循环时,再处理重绘事件。
3.根据权利要求1所述的一种解决界面重复刷新问题的系统,其特征在于:所述当前窗口刷新模块update在一个事件循环内被调用多次时,会将多个小的重绘事件合并成一个大的重绘事件加入到事件队列,下次刷新的时候,只需要执行一次重绘即可,减少了刷新次数。
4.一种基于权利要求1-3任意一项所述系统的解决界面重复刷新问题的方法,其特征在于,步骤包括:
5.根据权利要求4所述的解决界面重复刷新问题的方法,其特征在于:所述步骤s10将窗口父类设为空,不再需要对父窗口和子窗口分别刷新一遍,从而不会出现重复刷新子窗口的现象。
6.根据权利要求4所述的解决界面重复刷新问题的方法,其特征在于:区域s包括:对话框移动经过区域、初始位置和结束位置所形成的矩形。
7.根据权利要求4所述的解决界面重复刷新问题的方法,其特征在于:立即刷新区域面积s2最大面积为对话框面积s。
8.根据权利要求4所述的解决界面重复刷新问题的方法,其特征在于:步骤s60刷新面积为:s1–s2,步骤s70刷新面积为s2,所以最终相当于只刷新了一次s1的面积,不存在任何重复刷新区域面积的现象。
9.根据权利要求4所述的解决界面重复刷新问题的方法,其特征在于:步骤s60调用所述窗口部分区域刷新模块up-qregion与所述窗口部分区域立即刷新模块re-qregion相比,能够将短时间内被多次调用重绘的小事件合并成一个大的重绘事件,不需要重复被调用去反复重绘小事件,减少了刷新次数。
10.根据权利要求4所述的解决界面重复刷新问题的方法,其特征在于:步骤s70调用所述窗口部分区域立即刷新模块re-qregion与所述窗口部分区域刷新模块up-qregion相比,在刷新窗口时具有及时性,不容易出现移动过程中会出现对话框显示不全的现象。