CN117055746A - 笔迹的生成方法、生成装置、存储介质及电子设备 - Google Patents
笔迹的生成方法、生成装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN117055746A CN117055746A CN202311117653.3A CN202311117653A CN117055746A CN 117055746 A CN117055746 A CN 117055746A CN 202311117653 A CN202311117653 A CN 202311117653A CN 117055746 A CN117055746 A CN 117055746A
- Authority
- CN
- China
- Prior art keywords
- storage set
- handwriting
- point information
- data point
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000004044 response Effects 0.000 claims description 31
- 238000009877 rendering Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000011010 flushing procedure Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 208000018747 cerebellar ataxia with neuropathy and bilateral vestibular areflexia syndrome Diseases 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
- G06F3/0386—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry for light pen
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/042—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means
- G06F3/0425—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means using a single imaging device like a video camera for tracking the absolute position of a single or a plurality of objects with respect to an imaged reference surface, e.g. video camera imaging a display or a projection screen, a table or a wall surface, on which a computer generated image is displayed or projected
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
Abstract
本公开提供一种笔迹的生成方法、生成装置、存储介质及电子设备,属于笔迹生成技术领域。其中,本公开提供的一种笔迹生成方法,包括响应于触摸事件,将所述触摸事件对应的数据点信息存储到第一存储集合,并基于所述数据点信息的存储次序,生成相应的笔迹数据并进行显示;基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息从所述第一存储集合中移到第二存储集合中。通过本公开提供的笔迹生成方法,可解决现有技术中笔迹生成速度慢,UI显示卡顿的问题。
Description
技术领域
本公开属于笔迹生成技术领域,具体涉及一种笔迹的生成方法、生成装置、存储介质及电子设备。
背景技术
原生安卓(Android)系统使用SKIA引擎生成用户界面(User Interface,UI),通过SurfaceFlinger将UI的数据传递给显存中。而激光笔要求实时性比较高的显示效果,在硬件性能较低的情况下,原生Android生成UI的流程速度慢,UI显示卡顿。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一,第一方面,本公开实施例提供一种提高笔迹生成速度和UI显示效果的笔迹生成方法,其包括:
响应于触摸事件,将所述触摸事件对应的数据点信息存储到第一存储集合,并基于所述数据点信息的存储次序,生成相应的笔迹数据并进行显示;
基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息从所述第一存储集合中移到第二存储集合中;
擦除所述第二存储集合中的数据点信息对应的笔迹数据。
在一些实施例中,所述响应于触摸事件,将所述触摸事件对应的数据点信息存储到第一存储集合,包括:
响应于所述触摸事件,响应于所述第一存储集合中的当前路径对象的存储空间充足时,将当前所接收的数据点信息进行存储;
响应于所述第一存储集合中的当前路径对象的存储空间不充足时,创建新的路径对象,并对当前所接收的数据点信息进行存储。
在一些实施例中,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息从所述第一存储集合中移到第二存储集合中,包括:
基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中。
在一些实施例中,所述方法还包括:在所述第一地址空中创建所述路径对象的同时还包括记录所述路径对象的创建时间;
所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
当距离所述路径对象的创建时间到达预设时长时,将所述第一存储集合中的所述路径对象从所述第一存储集合中移到第二存储集合中。
在一些实施例中,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
响应于在第二预设时长内未接收到所述触控信号,按照所述第一存储集合中路径对象的创建次序,依次将所述第一空间中的路径对象从所述第一存储集合中移到第二存储集合中。
在一些实施例中,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
响应于所述触摸事件的模式切换,将所述第一存储集合中的路径对象全部移到所述第二存储集合中。
在一些实施例中,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
响应于再次接收到所述触摸事件的操作设备发送的触控信号,将所述第一存储集合中的路径对象全部移到所述第二存储集合中。
在一些实施例中,所述方法还包括:响应于屏幕刷新信号,清空所述第二存储集合中的路径对象。
在一些实施例中,所述生成相应的笔迹数据,包括;
在第三存储集合生成缓存画布,并根据所述第一地址中的数据点信息在所述缓存画布上生成所述笔迹数据。
在一些实施例中,所述方法还包括:
响应于所述第一存储集合中无所述数据点信息时,清空所述缓存画布。
在一些实施例中,对所述笔迹进行显示包括:
利用帧缓存驱动接口,通过标准图形绘制引擎将所述缓存画布中的笔迹数据渲染到显示屏幕中。
第二方面,本公开实施例提供一种笔迹生成装置,所述装置包括:
处理模块,用于响应于触摸事件,将所述触摸事件对应的数据点信息存储到第一存储集合,并基于所述数据点信息的存储次序,生成相应的笔迹数据并进行显示;
移动模块,用于基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息从所述第一存储集合中移到第二存储集合中。
第三方面,本公开实施例提供一种存储介质,其上存储有笔迹生成的计算机程序代码,当所述计算机程序代码被处理器运行时实现上述第一方面提供的任一项所述的方法。
第四方面,本公开实施例还提供一种电子设备,其中,包括:
处理器;
用于存储处理器可执行指令的存储器,其中,
所述处理器被配置为调用所述存储器存储的指令,用于执行上述第一方面提供的任一项所述的方法。
附图说明
图1为本公开实施例提供的一种笔迹的生成方法的流程图;
图2为本公开实施例提供的一种对于步骤S101中数据点信息的存储的具体步骤的流程图;
图3为本公开实施例提供的一种对于步骤S102中将满足预设条件的数据点信息从第一存储集合移到第二存储集合的示意图;
图4为本公开实施例提供的一种对于步骤S102中将满足预设条件的数据点信息从第一存储集合移到第二存储集合的示意图;
图5为本公开实施例提供的一种基于硬件的笔迹数据生成的方法流程图;
图6为本公开实施例提供的一种在步骤S102中对笔迹数据进行显示的具体步骤方法流程图;
图7为本公开实施例提供的一种笔迹的生成装置示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1为本公开实施例提供的一种笔迹的生成方法的流程图。如图1所示,实施例提供的一种笔迹的生成方法包括如下步骤:
S101:响应于触摸事件,将触摸事件对应的数据点信息存储到第一存储集合,并基于数据点信息的存储次序,生成相应的笔迹数据并进行显示。
S102:基于触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息从第一存储集合中移到第二存储集合中。
S103:擦除所述第二存储集合中的数据点信息对应的笔迹数据。
具体地,触摸事件指的是笔迹生成相关的事件,比如在Android系统的白板上生成激光笔的笔迹事件。笔迹是将多个数据点连接形成的图案,该笔迹可以为一段曲线或者由曲线组成的图案比如字迹等等。数据点信息是与数据点对应的信息,该数据点信息可以包括数据点的位置坐标、数据点存储的时间及数据点的数据类型等。
第一存储集合和第二存储集合用于存储笔迹生成过程中所需的数据,比如笔迹对应的数据点信息等。
在一些实施例中,第一存储集合和第二存储集合可以为应用程序(Application,APP)运行时系统分配的虚拟地址空间。具体地,每启动一个应用程序(Application,APP),系统都会默认给该APP分配虚拟内存空间,当APP的内存空间不够的时候,会继续申请新的虚拟内存。例如,APP刚启动时候,系统给该APP分配有200M的可用虚拟内存,当该APP在使用过程中,它的可用虚拟内存不够用了,就可能申请到共300M的可用虚拟内存。最后,在APP内部,每有对象生成也都会占用系统分配的可用虚拟内存的一部分。该虚拟内存空间会映射到实际的物理空间中。当满足预设条件的数据点信息从第一存储集合中移到第二存储集合中时,指的是在虚拟内存空间中数据点信息从第一存储集合中移到第二存储集合中,而对于实际的物理地址来说,只是与虚拟内存空间的映射关系发生了变化。
在一些实施例中,第一存储集合和第二存储集合还可以为真实的物理地址空间,此时第一存储集合和第二存储集合分别对应不同的物理地址空间。
在本公开实施例中,响应于触摸事件,处理器向系统申请一固定的存储集合用于存储笔迹生成过程中所需的数据,同时,将存储集合分为第一存储集合和第二存储集合。其中,对于第一存储集合用于存储触摸事件对应的数据点信息,第一存储集合中的数据点信息用于生成相应的笔迹数据,以使处理器根据该笔迹数据进行图像渲染,在屏幕上进行显示。对于第二存储集合用于存储满足预设条件的数据点信息,第二存储集合中的数据点信息虽然也会生成笔迹数据,但该笔迹数据将会生成透明图层,故不会被屏幕上用户观看到,也即相当于对第二存储集合中的数据点信息对应的笔迹数据进行了“擦除”操作。
在本公开实施例中,处理器可以根据触摸事件对应的触控信号的状态,判断第一存储集合中的各个数据点信息是否满足预设条件,若果满足预设条件,就会将第一存储集合中对应的数据点信息从第一存储集合中移到第二存储集合中。
在一些示例中,在笔迹生成过程中,处理器可以将数据点信息存储到第一存储集合,根据第一存储集合中数据点信息生成笔迹数据并显示的步骤可以与将第一存储集合中满足预设条件的数据点信息从第一存储集合移到第二存储集合中的步骤同时执行。例如:屏幕上待“擦除”的笔迹不会影响待生成的笔迹,此时处理器则可以在向第一存储集合中存储待生成的笔迹的数据点信息的同时,将第一存储集合中与待“擦除”的笔迹对应的数据点信息移到第二存储集合中。其中,待“擦除”的笔迹不会影响待生成的笔迹的情况,可以是待擦除的笔迹和待生成的笔迹位于屏幕的不同位置。也就是说,本公开实施例中上述的步骤S101和步骤S102的执行顺序并不分先后,仅代表该笔迹生成方法包括步骤S101和步骤S102的执行内容。
在一些实施例中,在笔迹生成过程中,处理器也可以先执行将第一存储集合中满足预设条件的数据点信息从第一存储集合移到第二存储集合中的步骤,再执行将数据点信息存储到第一存储集合,根据第一存储集合中数据点信息生成笔迹数据并显示的步骤。比如,屏幕上待“擦除”的笔迹会影响待生成的笔迹,此时处理器需要先将第一存储集合中与待“擦除”的笔迹对应的数据点信息移到第二存储集合中,然后处理器再执行向第一存储集合中存储待生成的笔迹的数据点信息,并根据第一存储集合中数据点信息生成笔迹数据并显示的步骤。也就是说,本公开实施例中上述的步骤S101和步骤S102中,先执行步骤S102,再执行步骤S101。
在一些实施例中,在笔迹生成过程中,处理器也可以先执行将数据点信息存储到第一存储集合,根据第一存储集合中数据点信息生成笔迹数据并显示的步骤。处理器再执行将第一存储集合中满足预设条件的数据点信息从第一存储集合移到第二存储集合中的步骤。比如,在首次响应触控信号时,屏幕上不存在旧的笔迹,此时处理器先执行将数据点信息存储到第一存储集合,根据第一存储集合中数据点信息生成笔迹数据并显示的步骤,再执行将第一存储集合中满足预设条件的数据点信息从第一存储集合移到第二存储集合中的步骤。也就是说,本公开实施例中上述的步骤S101和步骤S102中,先执行步骤S101,再执行步骤S102。
综上所述,在本公开实施例中对上述的步骤S101和步骤S102的执行顺序不做限定,可以根据具体的应用场景具体设置步骤的执行顺序。本公开实施例提供的笔迹生成方法,随着第一存储集合中数据点信息的不断存储,显示屏幕中的笔迹也会越来越长,即为笔迹增加的过程,同时,也会随着将满足预设条件的数据点信息从第一存储集合移到第二存储集合,显示屏幕中曾经显示的笔迹也会消失,也即笔迹移除的过程。
本公开实施例提供的笔迹生成方法,通过将内存空间分为第一存储集合和第二存储集合,第一存储集合中的数据点信息用于生成相应的笔迹数据,以使处理器根据该笔迹数据进行图像渲染,在屏幕上进行显示,而第二存储集合中的数据点信息用于存储满足预设条件的数据点信息,第二存储集合中的数据点信息虽然也会生成笔迹数据,但该笔迹数据将会生成透明图层,故不会被屏幕上用户观看到,也即相当于对第二存储集合中的数据点信息对应的笔迹数据进行了“擦除”操作。通过将第一存储集合中满足预设条件的数据点信息从第一存储集合移到第二存储集合,可以实现在当前笔迹的基础上时,仅仅对笔迹中的部分(比如需要改变的地方或者存在错误时地方等)进行修改即可生成所需的新的笔迹,无需完全重新生成新的笔迹,提高了笔记生成的速度和UI显示的效果。同时,在将满足预设条件的数据点从第一存储集合中移到第二存储集合中时,以单个数据点信息为单位进行移动,可以提高笔迹生成的准确率。
在一些实施例中,在步骤S101中,响应于触摸事件,将触摸事件对应的数据点信息存储到第一存储集合,包括:响应于触摸事件,响应于第一存储集合中的当前路径对象的存储空间充足时,将当前所接收的数据点信息进行存储;响应于第一存储集合中的当前路径对象的存储空间不充足时,创建新的路径对象,并对当前所接收的数据点信息进行存储。
具体地,路径对象(PathObj)指的是存储笔迹数据点信息的对象。在数据点信息的存储过程中,当接收到数据点信息后,首先判断第一存储集合中是否存在路径对象(PathObj),若当前第一存储集合中没有路径对象,则在第一存储集合中创建路径对象。一般情况,在笔迹生成的开始阶段,首先需要先创建一个路径对象用于存储接收的数据点信息且路径对象能够存储预设数量的数据点信息。若当前第一存储集合中存在路径对象,则进一步需要判断第一存储集合中的当前路径对象的存储空间是否充足,具体通过将当前路径对象中已经存储的数据点信息的数量与第一预设阈值进行比较,判断第一存储集合中的当前路径对象的存储空间是否充足。如果当前路径对象中已经存储的数据点信息的数量小于第一预设阈值,说明该当前路径对象的存储空间充足,进一步将当前所接收的数据点信息存储在当前路径对象中;如果当前路径对象中已经存储的数据点信息的数量等于第一预设阈值,说明该当前路径对象的存储空间已经存满,当前路径对象的存储空间不充足,则创建一个新的路径对象,并将当前所接收的数据点信息存储在新的路径对象中。其中,第一预设阈值可以根据具体情况具体设置,比如根据第一存储集合中路径对象的数量确定,或者根据笔迹对应的数据点的数量确定等等,本公开对第一预设阈值的设置不做限定。
在一些实施例中,在步骤S102中,基于所述触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息从第一存储集合中移到第二存储集合中,包括:基于触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息所在的路径对象从第一存储集合中移到第二存储集合中。
具体地,每条笔迹对应多个数据点,当数据点的数量较多的时候,在将第一存储集合中满足预设条件的数据点信息从第一存储集合中移到第二存储集合时,以路径对象为单位进行移动可以提高移动的效率,同时提高笔迹生成的速度和UI显示的效果。
图2为本公开实施例提供的一种对于步骤S101中数据点信息的存储的具体步骤的流程图。如图2所示,对于步骤S101中数据点信息的存储的具体步骤,包括:
S201:接收数据点信息。
S202:判断第一存储集合中是否存在路径对象;
若第一存储集合中不存在路径对象,则执行S204-S205。
若第一存储集合中存在路径对象,则执行S203,S203:判断当前路径对象的存储空间是否充足。
若当前路径对象的存储空间不充足,则执行S204-S205。
S204:创建新的路径对象。
S205:将当前数据点信息存储在新的路径对象中。
若当前路径对象的存储空间充足,则执行S206。
S206:将当前数据点信息存储在当前路径对象中。
在一些示例中,在步骤S102中,将第一存储集合中满足预设条件的数据点信息从第一存储集合中移到第二存储集合中,其中预设条件包括但不限于如下情况:
1、当在预设时间段内接收不到触控信号时,笔迹从开始生成的一端开始逐渐消失。
2、在持续接收触控信号时,若存在笔迹数据超出阈值显示时间的情况,该超出阈值显示时间的笔迹数据对应的笔迹也会消失。
3、触发普通书写、擦除操作、笔迹选择、手势操作等其他操作时,笔迹立马消失。
4、在新的笔迹开始生成后,旧的笔迹立马消失。
可以理解的是,步骤S102中的预设条件除了包括上述的四种情况外,还可以包括其他情况,比如Home退到后台,切换到其他应用等等。针对上述不同的预设条件,步骤S102的执行方法不同,针对上述的四种情况,以下结合具体预设条件,对步骤S102进行具体说明。另外,需要说明的是,以下仅以第一存储集合中的数据点信息按照路径对象进行存储时,步骤S102的具体执行步骤为例进行说明。
在一些实施例中,针对步骤S102中预设条件为上述第一种情况时,该笔迹的生成方法除了包括步骤S101和步骤S102外,还包括:在第一地址空中创建路径对象的同时还包括记录路径对象的创建时间;步骤S102,基于触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息所在的路径对象从第一存储集合中移到第二存储集合中,具体包括:当距离路径对象的创建时间到达预设时长时,将第一存储集合中的路径对象从第一存储集合中移到第二存储集合中。
具体地,在该触摸事件为移动时,即在持续触发触控信号的过程中,可以根据路径对象的创建时长,也就是根据笔迹的显示时长,将对应的路径对象从第一存储集合移到第二存储集合中。
图3为本公开实施例提供的一种对于步骤S102中将满足预设条件的数据点信息从第一存储集合移到第二存储集合的示意图。如图3所示,当前第一存储集合301中存储有路径对象1:PathObj1、路径对象2:PathObj2、路径对象3:PathObj3、路径对象4:PathObj4、路径对象5:PathObj5。在302中,判断距离路径对象的创建时间是否到达预设时长,也即根据路径对象的时间属性判断笔迹是否显示超时。然后在303移除超时的PathObj,得到移除后的第二存储集合304,包括:PathObj1和PathObj2和移除后的第一存储集合305,包括:PathObj3、PathObj4、PathObj5。
在一些实施例中,针对步骤S102中预设条件为上述第二种情况时,基于触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息所在的路径对象从第一存储集合中移到第二存储集合中,包括:响应于在第二预设时长内未接收到触控信号,按照第一存储集合中路径对象的创建次序,依次将第一空间中的路径对象从第一存储集合中移到第二存储集合中。
具体地,若在一定的时间段内一直未收到触控信号,说明该次笔迹的生成过程结束,当该笔迹在显示预设的时间段后就会根据笔迹显示的顺序逐渐消失。
图4为本公开实施例提供的一种对于步骤S102中将满足预设条件的数据点信息从第一存储集合移到第二存储集合的示意图,如图4所述,4a为接收到最后一个数据点信息后显示的笔迹示意图,4b为经过第一时间段后屏幕上显示的笔迹示意图,其中第一时间段大于第二预设时长,4c为在4b的基础上又经过第二时间段后屏幕上的显示的笔迹示意图。从4a-4c可以看出,当长时间(第二预设时长)内未接收到触控信号,笔迹就会按照笔迹显示的顺序逐渐消失,也就是按照第一存储集合中路径对象的创建次序,将路径对象从第一存储集合移到第二存储集合。
在一些实施例中,针对步骤S102中预设条件为上述第三种情况时,基于触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息所在的路径对象从第一存储集合中移到第二存储集合中,包括:响应于触摸事件的模式切换,将第一存储集合中的路径对象全部移到所述第二存储集合中。其中,触摸事件的模式包括普通书写模式、擦除模式、笔迹选择模式、手势模式等其他操作。
在一些实施例中,针对步骤S102中预设条件为上述第四种情况时,基于所述触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息所在的路径对象从第一存储集合中移到第二存储集合中,包括:响应于再次接收到触摸事件的操作设备发送的触控信号,将第一存储集合中的路径对象全部移到第二存储集合中。也就是在开始新的笔迹生成时,旧的笔迹会立马消失。
当然,步骤S102中的预设条件除了包括上述的四种情况外,还可以为其他的情况。例如,当需要对当前的笔迹进行更改时。举例来说,假设当前在第一存储集合中存储的数据点信息对应形成的笔迹为“大于”,但是当前想要将该笔迹更改为“大小”,那么可以将“于”笔迹所在的数据点信息从第一存储集合中移到第二存储集合中,则屏幕上就不会出现“于”所对应的笔迹,相当于将“于”笔迹进行了“擦除”。然后只需在第一存储空间中重新存储“小”笔迹对应的数据点信息即可,无需将“大小”笔迹对应的数据点信息全部重新存储到第一存储集合,通过“擦除”的方式,当笔迹改变时,无需将所需的笔迹重新存储到第一存储集合中进行显示,只要将改变的部分笔迹对应的数据点信息存储到第一存储集合即可,提高了笔迹生成的速度和UI的显示效果。该预设条件还可以是当前第一存储集合中存储错误的数据点的信息,比如第一存储集合中对某个数据点信息存储了两次,此时可以将多余的数据点信息移到第二存储集合中,以实现对多余笔迹的“擦除”,本公开对具体的预设条件不做限制。
在一些实施例中,该笔迹生成方法除了包括上述步骤S101和步骤S102外,还包括:响应于屏幕刷新信号,清空第二存储集合中的路径对象。具体地,系统会每隔一段时间发送屏幕刷新信号,应用层通过安卓的choreographer机制来响应该屏幕刷新信号,从而触发笔迹生成过程中对应的操作。即在每次屏幕刷新的时候,对于第一存储集合,会将满足预设条件的数据点信息从第一存储集合移到第二存储集合,同时新的数据点信息会存储到第一存储集合中并生成相应的笔迹数据进行显示。对于第二存储集合中,也可以将第二存储集合中的数据点信息全部清除,以满足内存的要求。屏幕刷新的频率根据需求灵活设置,一般情况,每隔16ms屏幕就会刷新一次。另外,为保证当前笔迹的圆滑性,第二存储集合中一般存储有最后两次从第一存储集合中移到第二存储集合中的数据点信息,这样第二存储集合的数据点信息对应的笔迹可以拟合为贝塞尔曲线,进一步可以使得第一存储集合中剩余的笔迹更圆滑,效果更好。
在一些实施例中,在步骤S101中,生成相应的笔迹数据,包括;在第三存储集合生成缓存画布,并根据第一地址中的数据点信息在缓存画布上生成笔迹数据。具体地,系统分配的内存空间还包括第三存储集合,用于存储缓存画布。该缓存画布的意义是,申请一固定的内存空间用于存储生成的笔迹数据,该缓存画布也可以重复使用。可以理解的是,该缓存画布是叠加在原始窗口上的新的画布。例如,在PPT显示时使用激光笔笔迹的应用场景中,激光笔笔迹的缓存画布与原始PPT显示的画布是两个不同的画布,这样在进行激光笔的笔迹“擦除”操做的时候也不会影响原始PPT画面的显示。
在一些实施例中,该笔迹生成方法不仅包括步骤S101和步骤S102,还包括:响应于第一存储集合中无数据点信息时,清空缓存画布。具体地,此时清空缓存画布不仅包括清空画布中第一存储集合中对应的笔迹数据,也包括清空缓存画布中第二存储集合中对应的笔迹数据,目的是供给下次笔迹生成使用。
图5为本公开实施例提供的一种基于硬件的笔迹数据生成的方法流程图,如图5所示,该笔迹数据生成方法包括:
S501:进入笔迹数据生成模式。此时会通知硬件加速模块需要进入加速模式,此时屏幕上,会生成一个透明的顶层加速缓存画布。
S502:根据第二存储集合的PathObj,在缓存画布上生成与第二存储集合的PathObj相应的笔迹数据并进行“显示”。
在步骤S502中,处理器根据第二存储集合中的PathObj生成透明图层,并在该透明图层上生成对应的笔迹数据,通过硬件加速接口加快将透明图层对应的笔迹数据渲染到屏幕上的速度,从而达到将满足预设条件的数据点信息对应的笔迹“消除”的效果。使用该种方法生成相应的笔迹并进行“显示”的优点是,当UI刷新时,不需要将整个缓存画布重新生成笔迹数据,从而能够提高笔迹生成的速度。与Android默认的生成方式相比,Android默认的生成笔迹并显示方式为每次UI更新,系统都会重新提供一个全新的、无内容的画布,然后在该缓存画布上重新开始生成新的内容。本公开实施例提供的生成笔迹的方法利用透明图层将满足预设条件的数据点信息对应的笔迹进行“擦除”,加快了笔迹生成的速度,提高了UI的显示效果。
S503:根据第一存储集合的PathObj在画布上生成相应的笔迹数据并进行显示。
对于第一存储集合中的PathObj也是通过硬件加速接口加快渲染到屏幕上的速度。需要说明的是,步骤S502和步骤S503没有先后顺序,具体可参考上述对步骤S101和步骤S102的叙述,此处不再重复赘述。
S504:更新第一存储集合的PathObj和清空第二存储集合的PathObj。
对于第一存储集合,将满足预设条件的第一存储集合中的PathObj移到第二存储集合中,并继续存储新的数据点信息。对于第二存储集合,清空第二存储集合中的PathObj。
S505:判断第一存储集合的PathObj是否为空,若第一存储集合的PathObj为空,则执行S506:退出笔迹数据生成模式。具体地,若第一存储集合的PathObj为空,则需要清空缓存画布,用于供给下次笔迹数据生成使用,然后通知硬件加速模块退出加速绘制模式。
若第一存储集合的PathObj不为空,则继续执行S502-S504步骤。其中,步骤S502-S504为屏幕刷新时执行的操作步骤。屏幕会每隔一段时间进行一次屏幕的刷新,每进行一次屏幕刷新都会执行步骤S502-S504,直到第一存储集合的PathObj为空,退出笔迹数据生成模式。
在一些实施例中,在步骤S102中,对笔迹进行显示包括:利用帧缓存(FrameBuffer)驱动接口,通过标准图形绘制引擎将缓存画布中的笔迹数据渲染到显示屏幕中。具体地,硬件加速模块对外提供绘制接口,如绘制路径接口,绘制颜色接口等等。外部调用绘制接口后,会触发硬件加速模块的图像渲染操作,用于缓存画布的数据准备。该图像渲染标准接口可使用OpenGL或者SKIA,其中,OpenGL和SKIA均是Android平台上提供的标准图形绘制引擎。然后处理器通过FrameBuffer驱动接口,直接将缓存画布中的笔迹数据存储到显存中,此时,FrameBuffer驱动程序会自动将该缓存画布显示到屏幕上。其中,FrameBuffer可以控制显存,显存是显卡的内存,显卡直接控制着屏幕显示。即处理器可以通过FrameBuffer接口直接操作显卡硬件,达到显示的效果。
图6为本公开实施例提供的一种在步骤S102中对笔迹数据进行显示的具体步骤的方法流程图。如图6所示,该方法包括:
S601:创建缓存画布(Bitmap)。
S602:准备缓存画布的数据,包括准备图像渲染标准接口,比如生成路径(Path)的接口、生成颜色(Color)的接口、生成缓存画布(Bitmap)的接口及其他生成接口等等。
S603:利用FrameBuffer驱动接口,通过标准图形绘制引擎将所述缓存画布中的笔迹数据渲染到显示屏幕中。
图7为本公开实施例提供的一种笔迹的生成装置示意图。如图7所示,该生成装置包括处理模块701和移动模块702。
其中,处理模块701用于响应于触摸事件,将触摸事件对应的数据点信息存储到第一存储集合,并基于数据点信息的存储次序,生成相应的笔迹数据并进行显示。移动模块702用于基于触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息从第一存储集合中移到第二存储集合中。
在一些实施例中,处理模块701包括判断模块7011,该判断模块7011用于响应于触摸事件,响应于第一存储集合中的当前路径对象的存储空间充足时,将当前所接收的数据点信息进行存储;响应于第一存储集合中的当前路径对象的存储空间不充足时,创建新的路径对象,并对当前所接收的数据点信息进行存储。
在一些实施例中,移动模块702具体用于基于触摸事件对应的触控信号的状态,将第一存储集合中满足预设条件的数据点信息所在的路径对象从第一存储集合中移到第二存储集合中。
在一些实施例中,处理模块701除了包括判断模块7011,还包括记录模块7012,该记录模块7012用于在第一地址空中创建所述路径对象的同时记录路径对象的创建时间,移动模块702具体还用于当距离路径对象的创建时间到达预设时长时,将第一存储集合中的路径对象从第一存储集合中移到第二存储集合中。
在一些实施例中,移动模块702具体还用于响应于在第二预设时长内未接收到触控信号,按照第一存储集合中路径对象的创建次序,依次将第一空间中的路径对象从第一存储集合中移到第二存储集合中。
在一些实施例中,移动模块702具体还用于响应于触摸事件的模式切换,将第一存储集合中的路径对象全部移到第二存储集合中。
在一些实施例中,移动模块702具体还用于响应于再次接收到触摸事件的操作设备发送的触控信号,将第一存储集合中的路径对象全部移到第二存储集合中。
在一些实施例中,处理模块701具体还用于在第三存储集合生成缓存画布,并根据第一存储集合中的数据点信息在缓存画布上生成所述笔迹数据。
在一些实施例中,处理模块701具体还用于响应于第一存储集合中无数据点信息时,清空缓存画布。
在一些实施例中,处理模块701具体还用于利用FrameBuffer驱动接口,通过标准图形绘制引擎将所述缓存画布中的笔迹数据渲染到显示屏幕中。
在一些实施例中,该生成装置除了包括处理模块701和移动模块702,还包括清空模块703,该清空模块703用于响应于屏幕刷新信号,清空第二存储集合中的路径对象。
该生成装置中具体的细节与上述生成方法的实施例类似,在此不再重复赘述。
本公开实施例还提供一种存储介质,其上存储有笔迹生成的计算机程序代码,当所述计算机程序代码被处理器运行时实现上述任一项方法实施例。
本公开实施例还提供一种电子设备,其中,包括:处理器;用于存储处理器可执行指令的存储器,其中,处理器被配置为调用存储器存储的指令,用于执行上述任一项方法实施例。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (15)
1.一种笔迹的生成方法,其包括:
响应于触摸事件,将所述触摸事件对应的数据点信息存储到第一存储集合,并基于所述数据点信息的存储次序,生成相应的笔迹数据并进行显示;
基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息从所述第一存储集合中移到第二存储集合中;
擦除所述第二存储集合中的数据点信息对应的笔迹数据。
2.根据权利要求1所述的生成方法,其中,所述响应于触摸事件,将所述触摸事件对应的数据点信息存储到第一存储集合,包括:
响应于所述触摸事件,响应于所述第一存储集合中的当前路径对象的存储空间充足时,将当前所接收的数据点信息进行存储;
响应于所述第一存储集合中的当前路径对象的存储空间不充足时,创建新的路径对象,并对当前所接收的数据点信息进行存储。
3.根据权利要求2所述的生成方法,其中,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息从所述第一存储集合中移到第二存储集合中,包括:
基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中。
4.根据权利要求3所述的生成方法,所述方法还包括:在所述第一存储结合中创建所述路径对象的同时还包括记录所述路径对象的创建时间;
所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
当距离所述路径对象的创建时间到达预设时长时,将所述第一存储集合中的所述路径对象从所述第一存储集合中移到第二存储集合中。
5.根据权利要求3所述的生成方法,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
响应于在第二预设时长内未接收到所述触控信号,按照所述第一存储集合中路径对象的创建次序,依次将所述第一存储集合中的路径对象从所述第一存储集合中移到第二存储集合中。
6.根据权利要求3所述的生成方法,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
响应于所述触摸事件的模式切换,将所述第一存储集合中的路径对象全部移到所述第二存储集合中。
7.根据权利要求6所述的生成方法,其特征在于,所述触摸事件的模式包括:普通书写模式、擦除模式、笔记选择模式、手势模式。
8.根据权利要求3所述的生成方法,所述基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息所在的路径对象从所述第一存储集合中移到第二存储集合中,包括:
响应于再次接收到所述触摸事件的操作设备发送的触控信号,将所述第一存储集合中的路径对象全部移到所述第二存储集合中。
9.根据权利要求1所述的生成方法,其中,所述方法还包括:响应于屏幕刷新信号,清空所述第二存储集合中的路径对象。
10.根据权利要求1所述的生成方法,其中,所述生成相应的笔迹数据,包括;
生成缓存画布,并根据所述第一存储集合中的数据点信息在所述缓存画布上生成所述笔迹数据。
11.根据权利要求10所述的生成方法,其中,所述方法还包括:
响应于所述第一存储集合中无所述数据点信息时,清空所述缓存画布。
12.根据权利要求10所述的生成方法,其中,对所述笔迹进行显示包括:
利用帧缓存驱动接口,通过标准图形绘制引擎将所述缓存画布中的笔迹数据渲染到显示屏幕中。
13.一种笔迹的生成装置,其中,所述装置包括:
处理模块,用于响应于触摸事件,将所述触摸事件对应的数据点信息存储到第一存储集合,并基于所述数据点信息的存储次序,生成相应的笔迹数据并进行显示;
移动模块,用于基于所述触摸事件对应的触控信号的状态,将所述第一存储集合中满足预设条件的数据点信息从所述第一存储集合中移到第二存储集合中。
14.一种存储介质,其上存储有笔迹生成的计算机程序代码,当所述计算机程序代码被处理器运行时实现权利要求1-12任一项所述的方法。
15.一种电子设备,其中,包括:
处理器;
用于存储处理器可执行指令的存储器,其中,
所述处理器被配置为调用所述存储器存储的指令,用于执行权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311117653.3A CN117055746A (zh) | 2023-08-31 | 2023-08-31 | 笔迹的生成方法、生成装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311117653.3A CN117055746A (zh) | 2023-08-31 | 2023-08-31 | 笔迹的生成方法、生成装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117055746A true CN117055746A (zh) | 2023-11-14 |
Family
ID=88667563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311117653.3A Pending CN117055746A (zh) | 2023-08-31 | 2023-08-31 | 笔迹的生成方法、生成装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117055746A (zh) |
-
2023
- 2023-08-31 CN CN202311117653.3A patent/CN117055746A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6911984B2 (en) | Desktop compositor using copy-on-write semantics | |
US5883634A (en) | System and method for clipping pixels drawn in one of a plurality of windows in a computer graphics system | |
JP3544666B2 (ja) | オブジェクト指向ディスプレイ・システム | |
US7262776B1 (en) | Incremental updating of animated displays using copy-on-write semantics | |
US4633436A (en) | Real-time rub-out erase for an electronic handwriting facility | |
JPH07141202A (ja) | コンテキストを管理するシステム及び方法 | |
US20150243257A1 (en) | Cross-Platform Rendering Engine | |
CA2645746C (en) | Method and graphical interface for embedding animated content into a computer application | |
EP0515076A1 (en) | Computer graphics system | |
US8643674B2 (en) | Rendering changed portions of composited images | |
CN114041111A (zh) | 笔迹绘制方法、装置、电子设备、介质和程序产品 | |
JP4158462B2 (ja) | 画面表示処理装置及び画面表示処理方法、並びにコンピュータ・プログラム | |
CN110297558B (zh) | 多点触摸控制方法、装置、智能交互平板及存储介质 | |
CN111542872B (zh) | 任意块渲染和显示帧重构 | |
CN111459593B (zh) | 绘制方法、装置及设备 | |
KR20080031595A (ko) | 오프스크린 버퍼링 관리 장치 및 방법 | |
US6853381B1 (en) | Method and apparatus for a write behind raster | |
CN117055746A (zh) | 笔迹的生成方法、生成装置、存储介质及电子设备 | |
CN115079869B (zh) | 一种电子白板的渲染方法及装置 | |
JP2010164972A (ja) | 画像ドローイング方法及び装置 | |
US7248267B2 (en) | Method and apparatus for simulated direct frame buffer access for graphics adapters | |
US7598954B2 (en) | Adapting and rendering graphic effects | |
JPH06149533A (ja) | 表示領域外セグメントの描画処理を削減したセグメント高速描画方式 | |
JPH08123651A (ja) | マルチウィンドウディスプレイ装置 | |
CN106933486A (zh) | 用于安卓系统的触控实现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |