本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于觸摸屏上畫線存儲(chǔ)的方法和裝置。
背景技術(shù):
交互式電子白板在觸控設(shè)備上作為交互平臺(tái)已經(jīng)越來越收到消費(fèi)者的歡迎,它可以實(shí)現(xiàn)無紙化辦公或教學(xué),象普通白板或教學(xué)黑板一樣直接用手指或筆書寫,然后將繪制的線條或者形狀呈現(xiàn)在屏幕上。
在已有技術(shù)中,電子白板通常作為一個(gè)畫圖APP安裝在終端里,在啟動(dòng)白板軟件后,用戶可以在畫布中進(jìn)行畫線的繪制,交互式白板繪制畫線的原理簡(jiǎn)單來說是這樣的,它首先根據(jù)用戶輸入的觸控手勢(shì)采集觸控關(guān)鍵點(diǎn),然后把觸控關(guān)鍵點(diǎn)進(jìn)行連接,就形成了一個(gè)畫線路徑(Path),對(duì)于每一條畫線,從檢測(cè)到手指按下到最終抬起,系統(tǒng)會(huì)認(rèn)為這是一個(gè)完整的畫線,在形成畫線路徑的同時(shí),會(huì)將畫線對(duì)應(yīng)的觸控?cái)?shù)據(jù)進(jìn)行保存,保存的目的是為了方便后續(xù)對(duì)繪制的畫線進(jìn)行編輯,即如果要對(duì)畫布中某條畫線進(jìn)行編輯,則需要找到該畫線對(duì)應(yīng)的觸控?cái)?shù)據(jù),對(duì)其進(jìn)行修改,再把修改后的觸控?cái)?shù)據(jù)展示在畫布中。通常來說,為了呈現(xiàn)編輯后的效果,需要先清除畫布,再把編輯后的觸控?cái)?shù)據(jù)繪制在畫布中。
在上述技術(shù)中,保存觸控?cái)?shù)據(jù)的方式為將每一條畫線作為一個(gè)Command對(duì)象,Command對(duì)象是對(duì)畫線的抽象數(shù)據(jù)結(jié)構(gòu)體,在Command對(duì)象中可以方便的訪問調(diào)用以及修改畫線的觸控?cái)?shù)據(jù),相應(yīng)的,對(duì)每一條畫線,系統(tǒng)都會(huì)為其Command對(duì)象分配唯一的ID值作為標(biāo)識(shí),如圖1所示,在畫線繪制階段,按照Command對(duì)象的創(chuàng)建順序,每個(gè)Command對(duì)象的ID值也在不斷遞增,在擦除時(shí)可能存在原來的一條畫線被分割成多條畫線的情況,為了實(shí)現(xiàn)對(duì)分割后的畫線能單獨(dú)進(jìn)行編輯處理,需要為分割后產(chǎn)生的多個(gè)畫線分別創(chuàng)建新的Command對(duì)象,相應(yīng)的,每個(gè)新的畫線的Command對(duì)象也會(huì)設(shè)置一個(gè)新的ID值作為標(biāo)識(shí)與其他畫線區(qū)分。
但是,本申請(qǐng)人發(fā)現(xiàn),按照已有技術(shù)的這種處理方式會(huì)出現(xiàn)如下缺陷,因?yàn)閷?duì)某畫線擦除后,已有技術(shù)會(huì)清除畫布,然后按照擦除后每條畫線的Command對(duì)象的ID值的大小順序去繪制畫線,因此現(xiàn)有的處理方法可能會(huì)存在擦除后打亂了原來的畫線順序的問題,即由于在畫布中展現(xiàn)畫線時(shí)因擦除某條畫線產(chǎn)生的新的畫線的Command對(duì)象是新創(chuàng)建的,所以可能會(huì)出現(xiàn)擦除后的畫線突然顯示在原來其他畫線上方的問題。舉例來說,如果首先使用紅色的畫筆進(jìn)行了畫線,然后使用了藍(lán)色的畫筆畫線,若藍(lán)色畫線和紅色畫線有交叉的部分,按照畫線的先后順序,紅色畫線在底層,藍(lán)色畫線在上層,若對(duì)紅色畫線執(zhí)行了擦除操作,則紅色畫線被劃分成新的畫線,在刷新畫布后,原紅色畫線被刪除,但是其產(chǎn)生多個(gè)新的畫線會(huì)基于其對(duì)應(yīng)的Command對(duì)象的ID值繪制在畫布的最上層,導(dǎo)致變成紅色畫線在藍(lán)色畫線的上方,出現(xiàn)畫線順序錯(cuò)亂的問題。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例通過提供一種基于觸摸屏上畫線存儲(chǔ)的方法和裝置,解決了現(xiàn)有技術(shù)中對(duì)畫線進(jìn)行擦除操作后,按照畫布中每條畫線的Command對(duì)象的ID標(biāo)識(shí)去刷新畫布重新繪制畫線時(shí),可能會(huì)出現(xiàn)將本來繪制較早的畫線顯示到其他較晚繪制的畫線上方的現(xiàn)象,導(dǎo)致畫線順序錯(cuò)亂的問題。
一方面,本申請(qǐng)實(shí)施例提供了一種基于觸摸屏上畫線存儲(chǔ)的方法,所述方法包括:
將目標(biāo)畫線以配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)的command對(duì)象存儲(chǔ),其中,所述ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序,所述parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序,且當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),所述新畫線的繪制順序不變。
另一方面,本申請(qǐng)實(shí)施例還提供了一種基于觸摸屏上畫線存儲(chǔ)的裝置,所述裝置包括:
繪制處理模塊,用于將目標(biāo)畫線以配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)的command對(duì)象存儲(chǔ),其中,所述ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序,所述parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序,且當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),所述新畫線的繪制順序不變。
再一方面,本申請(qǐng)實(shí)施例還提供了一種終端設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行上述程序時(shí)實(shí)現(xiàn)以下步驟,該步驟包括:
將目標(biāo)畫線以配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)的command對(duì)象存儲(chǔ),其中,所述ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序,所述parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序,且當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),所述新畫線的繪制順序不變。
本申請(qǐng)相對(duì)于現(xiàn)有技術(shù),對(duì)繪制的畫線配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)兩個(gè)參數(shù),即目標(biāo)畫線在現(xiàn)有技術(shù)ID標(biāo)識(shí)的基礎(chǔ)上,增加了一個(gè)parentID標(biāo)識(shí),對(duì)于目標(biāo)畫線部分被刪除后生成的一個(gè)或多個(gè)新畫線,所述新畫線的繪制順序不變,由于在現(xiàn)有技術(shù)中,ID標(biāo)識(shí)既作為command對(duì)象的創(chuàng)建順序標(biāo)識(shí),又作為擦除操作后,重新繪制畫線的繪制順序標(biāo)識(shí),會(huì)導(dǎo)致重新繪制畫線順序錯(cuò)亂的問題,而本申請(qǐng)利用ID標(biāo)識(shí)表征command對(duì)象的創(chuàng)建順序,parentID標(biāo)識(shí)表征畫線的繪制順序,因此在擦除操作結(jié)束后刷新畫布時(shí),不需通過ID標(biāo)識(shí)去確定畫線的繪制順序,可以按照parentID標(biāo)識(shí)的順序?qū)⒚織l畫線依次繪制在畫布中,這樣,即便原本繪制較早的目標(biāo)畫線被擦除,由于在刷新畫布后,擦除生成的多個(gè)新畫線可以保留有目標(biāo)畫線的繪制順序,因此,根據(jù)parentID值的順序去繪制每條畫線,最終畫布中呈現(xiàn)的畫線順序與用戶最初繪制的畫線順序一致,不會(huì)出現(xiàn)畫線順序錯(cuò)亂的現(xiàn)象,提高了用戶體驗(yàn)。
附圖說明
圖1為本申請(qǐng)實(shí)施例描述的現(xiàn)有技術(shù)在畫線繪制和擦除實(shí)現(xiàn)方法的示意圖;
圖2(a)為本申請(qǐng)描述的畫線繪制的示意圖;
圖2(b)為本申請(qǐng)描述的畫線擦除產(chǎn)生多條新畫線的示意圖;
圖3為本申請(qǐng)實(shí)施例一種基于觸摸屏上畫線存儲(chǔ)的方法的流程圖;
圖4為本申請(qǐng)實(shí)施例對(duì)目標(biāo)畫線進(jìn)行存儲(chǔ)的方法的流程圖;
圖5為本申請(qǐng)實(shí)施例描述的利用本申請(qǐng)的方法實(shí)現(xiàn)畫線繪制和擦除的示意圖;
圖6為本申請(qǐng)實(shí)施例一種基于觸摸屏上畫線存儲(chǔ)的裝置的結(jié)構(gòu)框圖;
圖7為本申請(qǐng)實(shí)施例的一種終端及應(yīng)用環(huán)境的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了更好的理解上述技術(shù)方案,下面將結(jié)合說明書附圖以及具體的實(shí)施方式對(duì)上述技術(shù)方案進(jìn)行詳細(xì)的說明。
由于在現(xiàn)有技術(shù)中,目標(biāo)畫線的command對(duì)象僅配置有ID標(biāo)識(shí),在刪除目標(biāo)畫線產(chǎn)生多個(gè)新畫線后,由于新的畫線也會(huì)創(chuàng)建新的command對(duì)象,為了區(qū)分每個(gè)command對(duì)象,新畫線的command對(duì)象也會(huì)被分配新的ID標(biāo)識(shí),這樣,刷新畫布后,有可能會(huì)導(dǎo)致按照較早繪制的畫線出現(xiàn)在較晚繪制的畫線的上方,即線序發(fā)生錯(cuò)亂,給用戶不好的用戶體驗(yàn)。
舉例來說,在現(xiàn)有技術(shù)中,對(duì)畫線擦除后重新繪制,是基于ID標(biāo)識(shí)的數(shù)值順序,如圖2所示,在圖2(a)中先使用甲顏色畫筆繪制了畫線(1),然后使用乙顏色畫筆繪制了三條畫線(2)(3)(4);在圖2(b)中灰色區(qū)域表示擦除的區(qū)域,擦除順序由上到下依次經(jīng)過畫線(2)(3)(1),將三條畫線分別分割成(5)(6)、(7)(8)、(9)(10)。在擦除操作后,基于呈現(xiàn)的需要,畫布會(huì)刷新,相應(yīng)的,畫布中的畫線會(huì)重新繪制一遍再顯示,此時(shí),(2)(3)(1)作為畫線刪除對(duì)象不會(huì)顯示,只顯示未擦除的對(duì)象(4)和擦除導(dǎo)致的分割的畫線對(duì)象(5)(6)、(7)(8)、(9)(10),按照系統(tǒng)為每條畫線對(duì)應(yīng)的Command對(duì)象分配的ID值的順序,則最終的繪制順序會(huì)是(4) (5)(6) (7)(8) (9)(10),甲顏色的線(9)(10)是最新生成的所以在最上層顯示,但是在原始圖片(a)中,甲顏色線在乙顏色線的底層,現(xiàn)有技術(shù)的處理方法會(huì)導(dǎo)致線序錯(cuò)亂。
因?yàn)椋瑸榱私鉀Q上述實(shí)際出現(xiàn)的問題,本申請(qǐng)?zhí)峁┝藢⒛繕?biāo)畫線以配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)的command對(duì)象存儲(chǔ),其中,所述ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序,所述parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序,且當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),所述新畫線的繪制順序不變。
如圖3所示本申請(qǐng)的一種具體實(shí)施方式,本申請(qǐng)?zhí)峁┝艘环N基于觸摸屏上畫線存儲(chǔ)的方法,所述方法包括:
步驟S101,將目標(biāo)畫線以配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)的command對(duì)象存儲(chǔ),其中,所述ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序,所述parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序,且當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),所述新畫線的繪制順序不變。
以電子白板軟件為例,對(duì)觸摸屏終端來說,其通常以應(yīng)用的形式,通過畫布展示給用戶,用戶可以在畫布上,以手指觸摸或者通過觸控工具的方式在屏幕上進(jìn)行移動(dòng),終端接收并識(shí)別用戶的滑動(dòng)軌跡,采集觸控點(diǎn),連接形成畫線路徑(Path),同時(shí)需要對(duì)畫線的觸控?cái)?shù)據(jù)進(jìn)行保存,在本方案中,將畫線抽象為command對(duì)象,其觸控?cái)?shù)據(jù)例如畫線的觸摸點(diǎn)位置坐標(biāo),觸摸軌跡的粗細(xì),顏色等都作為觸控?cái)?shù)據(jù)保存在command對(duì)象中,上層應(yīng)用通過command對(duì)象對(duì)觸控?cái)?shù)據(jù)進(jìn)行調(diào)用,修改編輯等操作,例如,在需要對(duì)畫布中某條畫線進(jìn)行編輯時(shí),則需要通過command對(duì)象修改觸控?cái)?shù)據(jù)。
通常來說,在用戶按下手指開始繪制到抬起手指,會(huì)認(rèn)為該過程產(chǎn)生的是一條畫線,在用戶抬起手指后,對(duì)應(yīng)的會(huì)創(chuàng)建command對(duì)象,當(dāng)然,何時(shí)創(chuàng)建command對(duì)象并不局限在抬起手指后,也可以在用戶按下手指時(shí)就開始創(chuàng)建,實(shí)時(shí)的把觸摸過程中的畫線對(duì)應(yīng)的觸控?cái)?shù)據(jù)寫入command對(duì)象中。
對(duì)于每一條畫線來說,系統(tǒng)會(huì)為其command對(duì)象分配有兩個(gè)重要參數(shù),一個(gè)是ID標(biāo)識(shí),一個(gè)是parentID標(biāo)識(shí), ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序, parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序。
ID標(biāo)識(shí)與parentID標(biāo)識(shí)的數(shù)值大小可以相同,也可以不同,一般來說,command對(duì)象的創(chuàng)建順序是和畫線的繪制順序是一致的,例如,在畫布中,第一條畫線,系統(tǒng)可為其分配ID=1,parented=1兩個(gè)標(biāo)識(shí)信息,第二條畫線,第三條畫線依次類推。當(dāng)然,對(duì)于第一條畫線,也可以令其ID=1,parentID=1000;那么對(duì)于第二條畫線,其ID=2,parentID=1001;第三條畫線,其ID=3,parentID=1003;以此類推…,也就是說,對(duì)于繪制階段的每條畫線,可選的方式是其ID標(biāo)識(shí)和parentID標(biāo)識(shí)的數(shù)值可以都是順序遞增的,通過數(shù)值的比較,可以得到每條畫線的command對(duì)象的創(chuàng)建順序以及繪制順序即可。
作為優(yōu)選方案,進(jìn)一步的,如圖4所示的繪制階段存儲(chǔ)畫線的方法流程圖,對(duì)于目標(biāo)畫線的command對(duì)象,可以通過如下步驟寫入觸控參數(shù):
步驟S1011,當(dāng)接收目標(biāo)畫線的繪制指令時(shí),創(chuàng)建目標(biāo)畫線對(duì)應(yīng)的command對(duì)象;
步驟S1012,根據(jù)當(dāng)前command對(duì)象的創(chuàng)建順序,為所述目標(biāo)畫線的command對(duì)象寫入ID標(biāo)識(shí);
在實(shí)際中,為了方便的獲知command對(duì)象的創(chuàng)建順序,可以將畫線對(duì)應(yīng)的command對(duì)象以數(shù)組的方式依次進(jìn)行存儲(chǔ),如圖2所示的表格,系統(tǒng)可以按照遞增的方式將ID標(biāo)識(shí)以1,2,3,4….的順序分配給command對(duì)象。
步驟S1012,根據(jù)所述ID標(biāo)識(shí)數(shù)值為parentID標(biāo)識(shí)賦值,以使得所述parentID標(biāo)識(shí)與所述ID標(biāo)識(shí)的賦值相同。
在繪制畫線的階段,可以認(rèn)為command對(duì)象的創(chuàng)建順序與畫線的繪制順序相同,因?yàn)槊坷L制一條畫線,對(duì)應(yīng)的就會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的command對(duì)象,因此,可以將ID標(biāo)識(shí)的數(shù)值大小對(duì)parentID進(jìn)行賦值操作,令這兩個(gè)標(biāo)識(shí)的數(shù)值大小相同。
步驟S102,當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),對(duì)所述新畫線創(chuàng)建新command對(duì)象存儲(chǔ),以及為所述新command對(duì)象配置所述目標(biāo)畫線原parentID標(biāo)識(shí)和按照所述新command對(duì)象創(chuàng)建順序配置新ID標(biāo)識(shí),且刪除所述目標(biāo)畫線的command對(duì)象。
畫線的擦除包含三種情況:
(a)畫線與擦除區(qū)域不相交;
(b)擦除區(qū)域擦除掉畫線的一端;
(c)擦除區(qū)域?qū)嬀€劃分成幾個(gè)部分。
對(duì)于(a)情況,當(dāng)畫線與擦除區(qū)域不相交時(shí),擦除操作不會(huì)影響畫線的觸控?cái)?shù)據(jù),畫線對(duì)應(yīng)的command對(duì)象一般不會(huì)有變化;(b)情況,由于擦除區(qū)域僅擦除掉畫線的一端,可以認(rèn)為畫線路徑與擦除路徑為相切,此時(shí),一般來說,畫線的command對(duì)象也不會(huì)被刪除,其觸控?cái)?shù)據(jù)會(huì)基于被擦除掉的一端進(jìn)行記錄,但command對(duì)象不會(huì)重新創(chuàng)建,當(dāng)然,對(duì)于擦除畫線的一端,也可以將原始畫線的command對(duì)象刪除,通過生成新的command對(duì)象存儲(chǔ)被擦除后的畫線的觸控?cái)?shù)據(jù),該種情況下,有可能也會(huì)出現(xiàn)被申請(qǐng)背景技術(shù)中介紹的問題,當(dāng)然也可以使用本申請(qǐng)的技術(shù)方案解決畫線順序錯(cuò)亂的技術(shù)缺陷,其實(shí)現(xiàn)原理與下面的(c)情況的解決方案相似,在此不再贅述,以下對(duì)(c)情況進(jìn)行詳細(xì)說明。
本申請(qǐng)主要針對(duì)的是對(duì)于(c)情況,擦除區(qū)域?qū)嬀€劃分為幾部分,例如將畫線分為兩段及兩段以上,因此,對(duì)于這種情況,進(jìn)一步的,步驟S102中當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線具體包括:
當(dāng)步驟S1021即接收針對(duì)目標(biāo)畫線的擦除指令時(shí),執(zhí)行步驟S1022;
步驟S1022,判斷所述擦除指令對(duì)應(yīng)的擦除路徑與所述目標(biāo)畫線的畫線路徑是否存在相交區(qū)域;
若是,即確定所述目標(biāo)畫線被擦除產(chǎn)生多條新畫線,則執(zhí)行步驟S1023,以所述相交區(qū)域?qū)⑺瞿繕?biāo)畫線分割成新畫線,
具體的,可以生成刪除所述目標(biāo)畫線的command對(duì)象的刪除指令,并為所述目標(biāo)畫線被相交區(qū)域分割成的至少兩段新畫線分別生成創(chuàng)建新的command對(duì)象的創(chuàng)建指令。
對(duì)于擦除后被分割為多段畫線的目標(biāo)畫線,后續(xù)刷新畫布后,不需要再顯示目標(biāo)畫線,因此,需要對(duì)目標(biāo)畫線的command對(duì)象進(jìn)行刪除,不再記錄目標(biāo)畫線的觸控?cái)?shù)據(jù),而是將目標(biāo)畫線的觸控?cái)?shù)據(jù)分配給幾個(gè)新畫線,并重新創(chuàng)建command對(duì)象存儲(chǔ)管理新畫線對(duì)應(yīng)的觸控?cái)?shù)據(jù),因此需要生成刪除所述目標(biāo)畫線的command對(duì)象的刪除指令,并為所述目標(biāo)畫線被相交區(qū)域分割成的至少兩段新畫線分別生成創(chuàng)建新的command對(duì)象的創(chuàng)建指令。
如圖5所示添加parentID標(biāo)識(shí)后的command對(duì)象畫線過程和擦除過程的示意圖,對(duì)于畫線繪制階段,每一條畫線的command對(duì)象中,ID標(biāo)識(shí)和parentID標(biāo)識(shí)大小相等,對(duì)于擦除操作產(chǎn)生的新畫線,新畫線的parentID標(biāo)識(shí)的值為擦除前被擦除畫線的parentID標(biāo)識(shí)的值。
進(jìn)一步的,對(duì)于新畫線來說,例如以將目標(biāo)畫線分割為兩段后,以圖2中的目標(biāo)畫線(2)擦除后被分割為兩個(gè)新畫線為例,目標(biāo)畫線(2)的ID=2,那么相應(yīng)的兩個(gè)新畫線在創(chuàng)建ID=5,ID=6的兩個(gè)command對(duì)象,至于是將分割區(qū)域左側(cè)的畫線分配ID=5,右側(cè)的畫線分配ID=6還是右側(cè)的畫線分配ID=5,左側(cè)的畫線分配ID=6,這兩種方式都不影響方案的實(shí)現(xiàn),可以隨機(jī)選取,或者按照預(yù)設(shè)好的規(guī)則,將左側(cè)的畫線優(yōu)先分配ID標(biāo)識(shí),只要兩個(gè)新畫線的parentID標(biāo)識(shí)與畫線(2)的parentID標(biāo)識(shí)數(shù)值相同,那么擦除結(jié)束刷新畫布,對(duì)畫線重新繪制時(shí),這兩個(gè)新畫線的繪制優(yōu)先級(jí)是相同的,實(shí)際繪制時(shí),也會(huì)將這兩條新畫線繪制在同一層上,不會(huì)影響畫線的先后順序。
本申請(qǐng)相對(duì)于現(xiàn)有技術(shù),對(duì)繪制的畫線配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)兩個(gè)參數(shù),即目標(biāo)畫線在現(xiàn)有技術(shù)ID標(biāo)識(shí)的基礎(chǔ)上,增加了一個(gè)parentID標(biāo)識(shí),對(duì)于目標(biāo)畫線部分被刪除后生成的一個(gè)或多個(gè)新畫線,所述新畫線的繪制順序不變,由于在現(xiàn)有技術(shù)中,ID標(biāo)識(shí)既作為command對(duì)象的創(chuàng)建順序標(biāo)識(shí),又作為擦除操作后,重新繪制畫線的繪制順序標(biāo)識(shí),會(huì)導(dǎo)致重新繪制畫線順序錯(cuò)亂的問題,而本申請(qǐng)利用ID標(biāo)識(shí)表征command對(duì)象的創(chuàng)建順序,parentID標(biāo)識(shí)表征畫線的繪制順序,因此在擦除操作結(jié)束后刷新畫布時(shí),不需通過ID標(biāo)識(shí)去確定畫線的繪制順序,可以按照parentID標(biāo)識(shí)的順序?qū)⒚織l畫線依次繪制在畫布中,這樣,即便原本繪制較早的目標(biāo)畫線被擦除,由于在刷新畫布后,擦除生成的多個(gè)新畫線可以保留有目標(biāo)畫線的繪制順序,因此,根據(jù)parentID值的順序去繪制每條畫線,最終畫布中呈現(xiàn)的畫線順序與用戶最初繪制的畫線順序一致,不會(huì)出現(xiàn)畫線順序錯(cuò)亂的現(xiàn)象,提高了用戶體驗(yàn)。
進(jìn)一步的,本申請(qǐng)的方法還包括:將新畫線的parentID標(biāo)識(shí)和command對(duì)象的對(duì)應(yīng)關(guān)系以MAP數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),其中所述MAP數(shù)據(jù)結(jié)構(gòu)中key值用于表征parentID標(biāo)識(shí),value值用于表征command對(duì)象; 所述MAP結(jié)構(gòu)按照parentID標(biāo)識(shí)的數(shù)值大小依次排序。
此外,對(duì)于目標(biāo)畫線來說,也可以同樣執(zhí)行該步驟:
將所述目標(biāo)畫線的command對(duì)象與parentID標(biāo)識(shí)分別作為value值和key值添加到MAP結(jié)構(gòu)中,所述MAP結(jié)構(gòu)按照parentID標(biāo)識(shí)的數(shù)值大小依次排序。
如果目標(biāo)畫線被擦除,其command對(duì)象也會(huì)相應(yīng)的被刪除,那么可以將目標(biāo)畫線的記錄在MAP結(jié)構(gòu)中刪掉。
如表1所示,為了快速查找到每個(gè)parentID和各個(gè)command對(duì)象的對(duì)應(yīng)關(guān)系,可以采用MAP的存儲(chǔ)方式保存command對(duì)象,即在每條畫線創(chuàng)建command對(duì)象后,可以將command對(duì)象添加到MAP數(shù)據(jù)結(jié)構(gòu)中,根據(jù)parentID的大小順序,將command對(duì)象存儲(chǔ)到對(duì)應(yīng)的位置上。
例如,將parentID=3的畫線3擦除后,其生成兩條新畫線,新畫線的ID按照command對(duì)象的創(chuàng)建順序,分別為n+1和n+2,那么ID標(biāo)識(shí)分別為n+1和n+2的兩條畫線,按照本申請(qǐng)的方法,其parentID標(biāo)識(shí)的數(shù)值大小需要和畫線3保持一致,在按照MAP數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)時(shí),parentID=3的key值就對(duì)于2個(gè)command對(duì)象,即ID=n+1以及ID=n+2的command對(duì)象,原來ID=3的畫線的command對(duì)象由于被刪除,相應(yīng)的在表1中可以將對(duì)應(yīng)的記錄刪除。
表1:
進(jìn)一步的,步驟S102即所述為每個(gè)所述新的command對(duì)象配置所述目標(biāo)畫線原parentID標(biāo)識(shí)和按照command對(duì)象的創(chuàng)建順序配置新的ID標(biāo)識(shí)的步驟之后還包括:
步驟M:清除所有畫線,查找所述MAP結(jié)構(gòu),按照所述parentID標(biāo)識(shí)的數(shù)值排列順序依次獲取與所述parentID標(biāo)識(shí)對(duì)應(yīng)的command對(duì)象;
步驟N:將獲取到的所述command對(duì)象對(duì)應(yīng)的觸控?cái)?shù)據(jù)依次繪制成畫線進(jìn)行顯示。
由于對(duì)畫線進(jìn)行擦除后,為了呈現(xiàn)擦除后的效果,需要清空畫布,將所有畫線清除,按照parentID標(biāo)識(shí)的順序,例如,首先查找parentID=1的畫線,根據(jù)表1,其對(duì)應(yīng)ID=1的command對(duì)象,讀取該command對(duì)象的觸控?cái)?shù)據(jù),將ID=1的畫線進(jìn)行繪制顯示,再查找parentID=2的畫線,根據(jù)表1,其對(duì)應(yīng)ID=2的command對(duì)象,讀取該command對(duì)象的觸控?cái)?shù)據(jù),將ID=2的畫線進(jìn)行繪制顯示,然后再查找parentID=3的畫線,根據(jù)表1,其對(duì)應(yīng)ID=n+1和ID=n+2的兩個(gè)command對(duì)象,讀取這兩個(gè)command對(duì)象的觸控?cái)?shù)據(jù),將ID=n+1和ID=n+2的畫線進(jìn)行繪制顯示,依次類推,這樣就保證了擦除后的新畫線仍然保持被擦除畫線的繪制順序,不會(huì)出現(xiàn)順序錯(cuò)亂。
通過采用了有序的parentID序列和對(duì)應(yīng)畫線command對(duì)象的MAP數(shù)據(jù)結(jié)構(gòu),相比于使用堆棧、數(shù)組或隊(duì)列等數(shù)據(jù)結(jié)構(gòu),在重新繪制畫線時(shí)根據(jù)parentID作為key值查找value值即command對(duì)象,減少了使用堆棧等數(shù)據(jù)結(jié)構(gòu)在繪制畫線遍歷排序的步驟,節(jié)省了時(shí)間,保證了畫線速度。
基于同樣的發(fā)明構(gòu)思,如圖6所示本申請(qǐng)裝置的結(jié)構(gòu)示意圖,本申請(qǐng)?zhí)峁┝艘环N基于觸摸屏上畫線存儲(chǔ)的裝置200,所述裝置200包括:
繪制處理模塊201,用于將目標(biāo)畫線以配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)的command對(duì)象存儲(chǔ),其中,所述ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序,所述parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序,且當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),所述新畫線的繪制順序不變;
進(jìn)一步的,裝置200還包括擦除處理模塊202,用于當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),對(duì)所述新畫線創(chuàng)建新command對(duì)象存儲(chǔ),以及為所述新command對(duì)象配置所述目標(biāo)畫線原parentID標(biāo)識(shí)和按照所述新command對(duì)象創(chuàng)建順序配置新ID標(biāo)識(shí),且刪除所述目標(biāo)畫線的command對(duì)象。
繪制處理模塊201與擦除處理模塊202連接,繪制處理模塊201為畫線階段的處理模塊,用于為command對(duì)象配置ID標(biāo)識(shí)和parentID標(biāo)識(shí),而擦除處理模塊202在繪制處理模塊201提供的數(shù)據(jù)基礎(chǔ)上,為擦除操作產(chǎn)生的新畫線分配ID標(biāo)識(shí)和parentID標(biāo)識(shí),也就是說,每條畫線的command對(duì)象要基于應(yīng)用場(chǎng)景,如繪制階段或者擦除階段,交給不同的功能模塊去實(shí)現(xiàn)標(biāo)識(shí)信息的分配。
進(jìn)一步的,所述擦除處理模塊202包括:
擦除指令接收模塊2021,用于接收針對(duì)目標(biāo)畫線的擦除指令;
判斷模塊2022,用于判斷所述擦除指令對(duì)應(yīng)的擦除路徑與所述目標(biāo)畫線的畫線路徑是否存在相交區(qū)域;
執(zhí)行模塊2023,用于以所述相交區(qū)域?qū)⑺瞿繕?biāo)畫線分割成新畫線。
進(jìn)一步的,所述繪制處理模塊201包括:
創(chuàng)建模塊2011,用于當(dāng)接收到針對(duì)目標(biāo)畫線的繪制指令時(shí),為所述目標(biāo)畫線創(chuàng)建command對(duì)象;
ID標(biāo)識(shí)寫入模塊2012,用于根據(jù)command對(duì)象的創(chuàng)建順序?qū)懭隝D標(biāo)識(shí);
parenID標(biāo)識(shí)寫入模塊2013,用于根據(jù)所述ID標(biāo)識(shí)數(shù)值為parentID標(biāo)識(shí)賦值,以使得所述parentID標(biāo)識(shí)與所述ID標(biāo)識(shí)的賦值相同。
進(jìn)一步的,所述裝置200還包括:
數(shù)據(jù)結(jié)構(gòu)保存模塊,用于將新畫線的parentID標(biāo)識(shí)和command對(duì)象的對(duì)應(yīng)關(guān)系以MAP數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),其中所述MAP數(shù)據(jù)結(jié)構(gòu)中key值用于表征parentID標(biāo)識(shí),value值用于表征command對(duì)象。
進(jìn)一步的,所述裝置200還包括:
查詢模塊,用于在清除所有畫線后,查找所述MAP結(jié)構(gòu),按照所述parentID標(biāo)識(shí)的數(shù)值排列順序依次獲取與所述parentID標(biāo)識(shí)對(duì)應(yīng)的command對(duì)象;
繪制刷新模塊,用于將獲取到的所述command對(duì)象對(duì)應(yīng)的觸控?cái)?shù)據(jù)依次繪制成畫線進(jìn)行顯示。
本申請(qǐng)相對(duì)于現(xiàn)有技術(shù),對(duì)繪制的畫線配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)兩個(gè)參數(shù),即目標(biāo)畫線在現(xiàn)有技術(shù)ID標(biāo)識(shí)的基礎(chǔ)上,增加了一個(gè)parentID標(biāo)識(shí),對(duì)于目標(biāo)畫線部分被刪除后生成的一個(gè)或多個(gè)新畫線,所述新畫線的繪制順序不變,由于在現(xiàn)有技術(shù)中,ID標(biāo)識(shí)既作為command對(duì)象的創(chuàng)建順序標(biāo)識(shí),又作為擦除操作后,重新繪制畫線的繪制順序標(biāo)識(shí),會(huì)導(dǎo)致重新繪制畫線順序錯(cuò)亂的問題,而本申請(qǐng)利用ID標(biāo)識(shí)表征command對(duì)象的創(chuàng)建順序,parentID標(biāo)識(shí)表征畫線的繪制順序,因此在擦除操作結(jié)束后刷新畫布時(shí),不需通過ID標(biāo)識(shí)去確定畫線的繪制順序,可以按照parentID標(biāo)識(shí)的順序?qū)⒚織l畫線依次繪制在畫布中,這樣,即便原本繪制較早的目標(biāo)畫線被擦除,由于在刷新畫布后,擦除生成的多個(gè)新畫線可以保留有目標(biāo)畫線的繪制順序,因此,根據(jù)parentID值的順序去繪制每條畫線,最終畫布中呈現(xiàn)的畫線順序與用戶最初繪制的畫線順序一致,不會(huì)出現(xiàn)畫線順序錯(cuò)亂的現(xiàn)象,提高了用戶體驗(yàn)。
圖7為本發(fā)明終端一應(yīng)用環(huán)境的實(shí)施例的結(jié)構(gòu)示意圖。如圖7所示,本實(shí)施例以終端為電視機(jī)為例,可以包括:處理器501、存儲(chǔ)器502和通信接口503;
在所述存儲(chǔ)器502存儲(chǔ)有可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行上述程序時(shí)實(shí)現(xiàn)以下步驟,該步驟包括將目標(biāo)畫線以配置有ID標(biāo)識(shí)和parentID標(biāo)識(shí)的command對(duì)象存儲(chǔ),其中,所述ID標(biāo)識(shí)用于表征所述command對(duì)象的創(chuàng)建順序,所述parentID標(biāo)識(shí)用于表征所述目標(biāo)畫線的繪制順序,且當(dāng)所述目標(biāo)畫線部分被擦除產(chǎn)生新畫線時(shí),所述新畫線的繪制順序不變。
其中,存儲(chǔ)器502,用于存儲(chǔ)畫線繪制以及擦除的程序;具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器502可能包含隨機(jī)存取存儲(chǔ)器(random access memory,簡(jiǎn)稱RAM),也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器。
通信接口503,用于接收輸入信號(hào)或者指令;
處理器501,用于根據(jù)信號(hào)或指令執(zhí)行存儲(chǔ)器502存儲(chǔ)的程序,用于執(zhí)行本發(fā)明方法實(shí)施例所提供的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,可參考圖1所示的方法實(shí)施例,此處不再贅述。
處理器可以由集成電路(Integrated Circuit,簡(jiǎn)稱IC) 組成,例如可以由單顆封裝的IC所組成,也可以由連接多顆相同功能或不同功能的封裝IC而組成。舉例來說,處理器可以是中央處理器(Central Processing Unit,簡(jiǎn)稱CPU),也可以是數(shù)字信號(hào)處理器(Digital Signal Processor,簡(jiǎn)稱DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)
明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。