一种解决界面重复刷新问题的系统及方法与流程

专利检索2025-06-25  3


本发明涉及一种界面刷新,具体为一种解决界面重复刷新问题的系统及方法。


背景技术:

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相比,在刷新窗口时具有及时性,不容易出现移动过程中会出现对话框显示不全的现象。


技术总结
本发明公开了一种解决界面重复刷新问题的系统及方法,其中,所述系统包括:窗口移动模块用于通过坐标的方式记录移动窗口的位置;当前窗口刷新模块用于对当前窗口进行重新绘制刷新,当所述当前窗口刷新模块没有参数时,对整个窗口进行重绘刷新;窗口部分区域刷新模块用于对当前窗口的话框中的部分区域进行重新绘制刷新;窗口立即刷新模块用于立即对当前窗口进行立即重新绘制刷新,范围为整个对话框;窗口部分区域立即刷新模块用于立即对当前窗口的部分参数区域进行立即重新绘制刷新;本发明将窗口父类设为空,不再需要对父窗口和子窗口分别刷新一遍,从而不会出现重复刷新子窗口的现象。

技术研发人员:牛玉安,冷艳启,郝春华
受保护的技术使用者:青岛汉泰电子有限公司
技术研发日:
技术公布日:2024/5/29
转载请注明原文地址:https://win.8miu.com/read-1155671.html

最新回复(0)