專利名稱:覆蓋電子墨跡的制作方法
本申請要求美國臨時專利申請序列編號60/379749(律師所編號003797.00401)和60/379781(律師所編號003797.87571)的優(yōu)先權,這兩個申請都在2002年5月14日入檔,都題為“墨跡接口”,在此通過引用包括其附加權利要求的其完整內容,將其合并。
有些計算機系統(tǒng)允許用戶在屏幕上畫圖。例如,Microsoft READER應用對一個文檔添加電子墨跡(在此也稱“墨跡”)。系統(tǒng)存儲該墨跡并在請求時將其提供給用戶。其它的應用(例如,在相關領域已知的與Palm 3.x和4.x以及PocketPC操作系統(tǒng)相關聯(lián)的畫圖應用)允許捕捉和存儲這些圖畫。而且,多種畫圖應用(如Coral Draw)和照片編輯應用(如Photoshop)可以與基于記錄筆的輸入產品(如Wacom書寫板產品)一起使用。這些圖畫包括與用來標記這些圖畫的筆劃相關聯(lián)的特性。舉例來說,線條的寬度和顏色可以以墨跡來存儲。這些系統(tǒng)的一個目的就是復制運用到一張紙上的物理墨跡的外觀。然而,紙上的墨跡可能具有大量的不能由某個坐標和連接線段的電子集合所捕捉的信息。這些信息中的某一些可能包括所用筆尖的厚度(如通過物理墨跡的寬度所看到的)或筆與紙的角度、筆尖的形狀、墨跡沉積的速度等等。
用電子墨跡帶來了另一個問題。這已被認為是用其所寫的應用的一個部分。這導致了基本上不能對其它應用或環(huán)境提供電子墨跡的豐富性。盡管文本可能在多個應用之間(如通過使用一個剪貼板)轉移,但墨跡沒有與墨跡相互作用的能力。舉例來說,不能創(chuàng)建一個八字形的圖像,通過剪貼板手段將所創(chuàng)建的圖像復制并粘貼到某篇文檔中,然后使墨跡變成粗體。一個難點就是應用間圖像的不可移植性。
可能期望讓開發(fā)者能容易地向他們已有的和新的應用添加對墨跡特性的第一流的支持。也期望能鼓勵對墨跡實現(xiàn)的應用采用一致的外觀。舉例來說,可能期望能增加對在一般可能接受或不接受墨跡輸入的文檔上書寫并/或與之相交互的支持。
通過考慮以下對較佳實施例的詳細描述,本發(fā)明的這些或其它特性將變得顯明。
圖1是一個可以用來實現(xiàn)本發(fā)明多個方面的說明性通用數(shù)字計算環(huán)境的功能性框圖。
圖2是一個可以如本發(fā)明多個方面所述那樣使用的說明性書寫板計算機和記錄筆的平面視圖。
圖3-6是可以如本發(fā)明多個方面所述那樣使用的架構和接口的功能性框圖。
圖7-9是一篇具有如本發(fā)明多個方面所述的一個或多個墨跡覆蓋對象的文檔的說明性屏幕截圖。
下面描述了一種在文檔上覆蓋電子墨跡的方式。
一般計算平臺圖1是一個可以用來實現(xiàn)本發(fā)明多個方面的傳統(tǒng)通用數(shù)字計算環(huán)境示例的功能性框圖。在圖1中,計算機100包括一個處理單元110、一個系統(tǒng)存儲器120,以及一條將多種系統(tǒng)部件(包括系統(tǒng)存儲器)與處理單元相連的系統(tǒng)總線130。系統(tǒng)總線130可以是幾種總線結構類型中的任何一種,包括存儲器總線或存儲器控制器、外圍總線,以及使用多種總線架構中任何一種的局部總線。系統(tǒng)存儲器120包括只讀存儲器(ROM)140和隨機訪問存儲器(RAM)150。
在ROM140中存儲了一個基本輸入/輸出系統(tǒng)160(BIOS),包含幫助在計算機100內各部件間傳輸信息的基本過程(例如在啟動時)。計算機100還包括一個用于讀取或寫入硬盤(未示出)的硬盤驅動器170、一個用于讀取或寫入可擦除磁盤190的磁盤驅動器180,和一個用于讀取或寫入可擦除光盤192(如CD ROM或其它光媒介)的光盤驅動器191。硬盤驅動器170、磁盤驅動器180和光盤驅動器191分別由硬盤驅動器接口194、磁盤驅動器接口193和光盤驅動器接口194連接到系統(tǒng)總線130。這些驅動器和與之相關聯(lián)的計算機可讀取媒介為個人計算機100提供了對計算機可讀取指令、數(shù)據(jù)結構、程序模塊和其它數(shù)據(jù)的不易失存儲。相關領域的行家會明白,在示例操作環(huán)境中還可以使用其它類型的可存儲可由計算機訪問數(shù)據(jù)的計算機可讀取媒介,如盒式磁帶、閃存卡、數(shù)字視頻盤、Bernoulli盒帶、隨機訪問存儲器(RAM)、只讀存儲器(ROM)等等。
許多程序模塊可以存儲在硬盤驅動器170、磁盤190、。光盤192、ROM140或RAM150上,包括操作系統(tǒng)195、一個或多個應用程序196、其它程序模塊197,以及程序數(shù)據(jù)198。用戶可以通過輸入設備如鍵盤101和指點設備102將命令和信息輸入計算機100。其它的輸入設備(未示出)可以包括話筒、游戲桿、游戲手柄、衛(wèi)星天線、掃描儀等等。這些或其它的輸入設備通常通過連接系統(tǒng)總線的串口接口106連接到處理單元110,但也可以由其它接口來連接,如并口、游戲口或通用串行總線(USB)。而且,這些設備也可以通過某種適當?shù)慕涌?未示出)直接連接到系統(tǒng)總線130。監(jiān)視器170或其它類型的顯示設備也通過某個接口(如視頻適配器108)連接到系統(tǒng)總線130。除了監(jiān)視器以外,個人計算機一般還包括其它外圍輸出設備(未示出),如音箱或打印機。在某一較佳實施例中,提供了一種筆數(shù)字化儀165以及伴隨的筆或記錄筆166,以數(shù)字化地捕捉徒手的輸入。盡管顯示了在筆數(shù)字化儀165和處理單元110之間的直接連接,但實際上,如在相關領域中已知的那樣,筆數(shù)字化儀165也可以通過串口、并口或其它接口和系統(tǒng)總線130而連接到處理單元110。而且,盡管數(shù)字化儀165是與監(jiān)視器107分開顯示的,但數(shù)字化儀165的可用輸入?yún)^(qū)域最好與監(jiān)視器107的顯示區(qū)域一同展開。而且,數(shù)字化儀165可以集成到顯示器107中,或者可以作為一個覆蓋或者附加于監(jiān)視器107的單獨設備。
計算機100可以運行在使用與一臺或多臺遠端計算機(如遠端計算機109)的邏輯連接的聯(lián)網(wǎng)環(huán)境中。遠端計算機109可以是服務器、路由器、網(wǎng)絡PC、對等設備或其它普通的網(wǎng)絡節(jié)點,一般包括上面關于計算機100所描述的多種或所有組件,盡管在圖1中只圖示了一個存儲器存儲設備111。在圖1中所描述的邏輯連接包括局域網(wǎng)(LAN)112和廣域網(wǎng)(WAN)113。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡、內聯(lián)網(wǎng)和互聯(lián)網(wǎng)中是相當普遍的。
當在某個LAN聯(lián)網(wǎng)環(huán)境中使用時,計算機100通過一個網(wǎng)絡接口或適配器114而連接到局域網(wǎng)112。當在某個WAN聯(lián)網(wǎng)環(huán)境中使用時,個人計算機100一般包括一個調制解調器115或其它手段,用于在該廣域網(wǎng)113(如互聯(lián)網(wǎng))上建立通信。調制解調器115可以是內置或外置的,通過串口接口106連接到系統(tǒng)總線130。在聯(lián)網(wǎng)環(huán)境中,關于個人計算機100所描述的程序模塊(或其部分)可以存儲在遠端存儲器存儲設備中。
可以明白,所示出的網(wǎng)絡連接是示例性的,也可以使用其它用于在計算機間建立通信鏈路的技術。假定已存在多種已知的協(xié)議之一,如TCP/IP、以太網(wǎng)、FTP、HTTP等等,而系統(tǒng)可以運行在某種客戶機-服務器配置中,使用戶能從某臺基于Web的服務器上獲取網(wǎng)頁。多種傳統(tǒng)Web瀏覽器中的任何一種都可以用來顯示與操作在網(wǎng)頁上的數(shù)據(jù)。
圖2顯示了某種可以按本發(fā)明多個方面所述的那樣使用的基于記錄筆的計算機處理系統(tǒng)(也稱為書寫板PC)201的一個示例。在圖1的系統(tǒng)中的所有或任何特性、子系統(tǒng)和功能都可以包括在圖2的計算機中。書寫板PC201包括一個很大的顯示屏表面(如某種數(shù)字化平板顯示屏,最好是某種液晶顯示屏(LCD)),在其上顯示多個窗口203。其它可以使用的顯示技術包括(但不限于)OLED顯示屏、等離子顯示屏等等。使用記錄筆204的筆尖(該筆尖在此也稱為“指針”),用戶可以在數(shù)字化顯示區(qū)域選擇、加亮和書寫。合適的數(shù)字化顯示面板的示例包括電磁筆數(shù)字化儀,如Mutoh或Wacom筆數(shù)字化儀。其它類型的筆數(shù)字化儀(如光數(shù)字化儀)也可以使用。書寫板PC201解釋用記錄筆204作的標記,以操作數(shù)據(jù)、輸入文本,以及執(zhí)行常規(guī)的計算機應用如電子表格、字處理程序等等。
記錄筆可以裝備按鍵或其它特性,來增加其選擇能力。在某一實施例中,記錄筆可以實現(xiàn)成某種“鉛筆”或“鋼筆”,其中一端組成一個書寫部分,而另一端組成一個“擦除”端(該端在顯示屏上移過時,指示出所要擦除的顯示屏部分)。其它類型的輸入設備(如鼠標、軌跡球等等)也可以使用。而且,用戶自己的手指也可以用來在某種接觸敏感或接近敏感的顯示屏上選擇或指示已顯示圖像的部分。因此,如這里所使用的術語“用戶輸入設備”傾向于具有廣泛的定義,并包含許多在已知輸入設備上的變種。電子墨跡與Ink(墨跡)對象的概念在此所使用的墨跡稱為電子墨跡。電子墨跡可以由一系列或一組筆劃構成,其中每個筆劃包括一系列或一組點。筆劃和/或點的序列可以按所捕捉的時間和/或該筆劃和/或點在頁面上出現(xiàn)的地方來排序。筆劃組可以包括筆劃和/或點的序列,以及/或無序的筆劃和/或點。點可以用多種已知的技術來表示,包括Cartesian坐標(X,Y)、極坐標(r,Θ)以及在相關領域中已知的技術。筆劃還可以可替換地以一個點和在下一個點方向的一個矢量來表示。筆劃確定包含關于墨跡的點或線段的任何表示,而無關乎其下面的點或連接點的事物的表示。墨跡的搜集一般在數(shù)字化儀(如顯示屏表面202的數(shù)字化儀)開始。用戶可以在數(shù)字化儀上防止一個記錄筆,并開始寫或畫。在此時,會產生新的墨跡包(即關于墨跡的數(shù)據(jù)的包)。用戶還可以在足夠接近數(shù)字化儀的空中移動記錄筆,使之能被數(shù)字化儀所感知。在這時,數(shù)據(jù)包(在此稱為“空中包”)可以根據(jù)所感知的記錄筆在空中的運動來產生。包可以不僅包括位置信息,還可以包括記錄筆壓力和/或角度信息。
為存儲墨跡,可以創(chuàng)建一個Ink(墨跡)對象,來表示由記錄筆204在顯示屏表面202和/或其它輸入上所描畫的原來的墨跡筆劃。所搜集的墨跡筆劃可以從在顯示屏表面202上的任何地方或其某個已定義的部分(如某個特定窗口)來搜集。Ink對象本質上是一個墨跡數(shù)據(jù)的容器。墨跡如何存儲在墨跡對象中的具體格式對本發(fā)明并不重要。但是,最好將如原來所描畫的墨跡筆劃存儲在墨跡對象中。
可以定義兩種示例性的墨跡對象類型。一個tInk對象(“t”意為“文本”)可以實現(xiàn)成一個表示用來構成字母或字詞的墨跡的OLE對象。tInk對象允許由如某個文本識別器來將手寫的墨跡轉換成文本??梢詫⒁粋€關于墨跡并且具有文本環(huán)境的墨跡對象稱為tInk對象。文本墨跡的顏色和/或字體大小,以及該文本墨跡是否是下劃線的、粗體的、斜體的等等,可以程序化地設定,并且可以基于在該tInk對象周圍的文本的性質。換句話說,可以將在tInk對象所要插入的點的周圍環(huán)境的屬性應用于該tInk對象。在某一實施例中,tInk對象只包含用于提交給文本識別器的單個字詞,這樣一個句子就可以包含多個tInk對象。另一方面,一個sInk對象(“s”意為“草圖”)也可以定義成一個表示不用來構成字詞的墨跡的對象。sInk對象也可以是一個OLE對象。因此一個sInk對象可以解釋成一幅圖畫或任何其它的非文本環(huán)境。sInk對象也可以用于表示多個字詞。一個墨跡兼容的應用(和/或用戶)可以將某個Ink對象標記為tInk對象或其它(如sInk對象)。為描述起見,這兩種墨跡類型在此稱為“tInk”和“sInk”。但是可以明白,也可以用其它名字來表示可以使用的多種墨跡對象類型。而且,可以用可替換的對象類型來以任何所期望的格式存儲電子墨跡。
墨跡控件API概述參考圖3,一個在此稱為墨跡控件API的API提供開發(fā)者一個用于多種對象和控件的模型。墨跡控件API可以對使用多種應用開發(fā)軟件(如Microsoft天然的Win32 COM API、Microsoft ActiveX API和/或Microsoft Managed API)的用戶可用。墨跡控件API使開發(fā)者能容易地對已存在的非墨跡兼容的應用和新應用添加一流的對墨跡的支持。開發(fā)者僅僅需要添加合適的控件并設定多種屬性。墨跡控件API進一步鼓勵對實現(xiàn)墨跡的應用采用一致的外觀,墨跡控件API可以作為用于實現(xiàn)用戶體驗的一個極好的起始點。墨跡控件API額外地提供開發(fā)者需要的墨跡用戶接口組件,然而在另一方面卻需要從劃跡中自我生成。
墨跡控件API的多種對象和控件包括InkCollector自動化對象302、InkCollector所管理對象306、InkOverlay自動化對象303、InkPicture ActiveX控件304、InkOverlay所管理對象305、PictureBox WinForms控件301以及/或InkPicture Winforms控件307。InkOverlay對象使開發(fā)者能容易地對應用添加注解功能,并擴展墨跡搜集功能,以提供對基本編輯(如選擇、移動、調整大小和擦除墨跡)的支持。InkPicture控件包含InkOverlay對象的某些或所有API組件,并使開發(fā)者能對窗口添加一個區(qū)域,用于搜集和編輯墨跡。InkPicture控件可以進一步使開發(fā)者能對窗口添加背景圖片、圖像和/或色彩。
以下將進一步描述的這些對象和控件可以與一個或多個主應用交互,如ActiveX主應用(例如VB6)和/或Win32主應用(全體的301)和/或共同語言運行期(CLR)主應用(VB7/C#)306。InkOverlay自動化對象303和InkPictureActiveX控件304可以由天然的Win32/ActiveX開發(fā)者使用,而InkOverlay所管理對象305和InkPicture WinForms控件307可以由使用CRL的開發(fā)者使用。在本圖中,實心箭頭表示一個示例性的繼承比喻,而斷開的箭頭指示一個示例性的使用比喻。
InkCollector對象InkCollector對象被用來從某個墨跡輸入設備捕捉墨跡,并/或將墨跡傳遞給某個應用。InkCollector對象通過搜集一個或多個墨劃的墨跡并將該墨跡存儲到一個或多個相關聯(lián)的墨跡對象中,在某種程度上扮演一個將墨跡“灌”入一個或多個不同和/或獨特的墨跡對象中的龍頭。InkCollector對象可以將其自身配屬于某個已知的應用窗口。而后它可以通過使用任何或所有可用的書寫板設備(可以包括記錄筆204和/或鼠標)在該窗口上提供實時的涂墨。為使用InkCollector對象,開發(fā)者可以創(chuàng)建它,指定在其中搜集所畫墨跡的窗口,并激活該對象。在InkCollector對象被激活后,可以被設定來以多種墨跡搜集模式(在其中搜集墨劃和/或姿態(tài))來搜集墨跡。姿態(tài)是記錄筆204的某種運動或其它動作,不是解釋成渲染的墨跡,而是解釋成執(zhí)行某些動作或功能的請求或命令。舉例來說,某種特定姿態(tài)可以為選擇墨跡的目的而執(zhí)行,而另一種姿態(tài)可以是為斜體化墨跡的目的而執(zhí)行。對于在數(shù)字化儀輸入上或接近數(shù)字化儀輸入的每個運動,InkCollector對象將搜集一個筆劃和/或一個姿態(tài)。
InkOverlay對象InkOverlay對象是一個對注解場景有用的對象,在其中最終用戶不必關心在墨跡上進行識別,但可以對墨跡的尺寸、形狀、顏色和位置感興趣。這很適合于進行注解和基本的抄寫。該對象的主要作用就是將墨跡顯示成墨跡。缺省的用戶界面是一個具有不透明墨跡的透明矩形。InkOverlay以幾種方式擴展了InkCollector類。舉例來說,InkOverlay對象(和/下面所討論的InkPicture控件)可以支持選擇、擦除和調整墨跡大小,以及刪除、剪切、復制和粘貼命令。
InkOverlay對象可以有用的一個典型場景是如通過在下面的文檔上進行手寫注釋、描畫等等來標記一個文檔。InkOverlay對象允許容易地實現(xiàn)這一場景所要求的涂墨和布局能力。舉例來說,為與InkOverlay對象一起運作,可以實例化一個InkOverlay對象,將該InkOverlay配屬與另一個窗口的hWnd,并將InkOverlay Enabled屬性設定為真。
參照圖4,顯示了組成InkOverlay對象的內部和外部依賴的組件部分的高層次框圖。箭頭指示了一個使用比喻。一個InkOverlay對象401可以從InkCollector對象402接收墨跡。InkOverlay對象401可以具有選擇管理功能403和/或編輯功能404。如在下面的示例中所討論的那樣,InkOverlay對象401可以具有透明覆蓋窗口管理功能405,以透明地覆蓋另一個對象(窗口)或其它顯示的數(shù)據(jù)項,如某個掃描得到的紙表格。在外部,InkOverlay對象401可以與多種應用和API相交互。舉例來說,某個應用可以利用InkOverlay對象401來實現(xiàn)多種低層次的涂墨功能。在某一實施例中,這樣的一個應用可以是Microsoft WINDOWS INK SERVICES PLATFORM(WISP)406。應當注意,應用406不限于WISP,如在此所討論的其它組件那樣,也不限于MicrosoftWINDOWS環(huán)境。InkOverlay對象401可以進一步與某個自動操作許多低層次WISP406功能的API相交互。在這一實施例中,這一API稱為自動化API407。自動化API407包括上面所討論的墨跡控件API,并提供給開發(fā)者包括Ink對象、InkCollector對象、InkOverlay對象和InkPicture控件的對象模型。InkOverlay對象401可以進一步與一個或多個操作系統(tǒng)API(如MicrosoftWINDOWSWin32 API408和/或Microsoft.NETAPI)相交互。
InkOverlay對象401的選擇管理功能403支持對墨跡的選擇。墨跡可以以多種方式來選擇,如通過某種套索工具(選擇在某個所跟蹤區(qū)域中所包含的對象)手段。InkOverlay對象401還可以支持輕擊選擇,在其中任何在上面和/或附近被點擊的Ink對象將被選擇。當一個Ink對象或Ink對象組被選擇后,調整尺寸的句柄(如八個調整尺寸句柄)就可以出現(xiàn)在該墨跡所框定的方框的四個角以及相鄰角之間的一個或多個中點處。移動這些調整尺寸句柄可以使所選擇的墨跡按照句柄的運動來調整尺寸??梢杂面I盤或其它更改器來指令InkOverlay對象在調整尺寸時維持原來的縱橫比。墨跡可以進一步用所期望的任何其它手段來調整尺寸。還有,可以用鍵盤或其它更改器來指令InkOverlay對象在拖動草組操作時復制所選擇的墨跡,而不是在拖動時調整墨跡尺寸。如果用戶在所選擇的區(qū)域內任何地方按下并保持,則該墨跡就變成在該控件內可移動的??梢赃M一步利用一個矩形選擇比喻,和/或一個字詞、句子和/或段落選擇比喻。舉例來說,在一個墨跡字詞內點擊將選擇該字詞,在一個墨跡句子內任何地方點擊將選擇這整個句子,而在一個墨跡段落內任何地方點擊同樣將選擇這整個段落。其它用于選擇的手段包括利用指示選擇行為的特定姿態(tài),如在某個墨劃上或附近單擊指示對該墨劃的選擇,在某個字詞上或附近雙擊選擇該字詞,以及三擊選擇整個句子。而且,可以通過程序化地或者由最終用戶輸入直接調用InkOverlay對象的API來選擇和/或修改墨跡。
而且,InkOverlay對象可以提供來用于墨跡擦除功能。舉例來說,InkOverlay對象可以提供來用于筆劃擦除模式和/或點擦除模式。在筆劃擦除模式中,如果光標落下并接觸到一個已存在的墨劃,則該墨劃被完全擦除。在點擦除模式中,如果光標落下并接觸到一個已存在的墨劃,則只有光標和該墨劃的重疊區(qū)域被擦除。
InkOverlay API現(xiàn)在參照圖5來討論一個用于InkOverlay對象的說明性應用編程接口(API)。在圖5中,InkOverlay對象501以一個方框表示,而一個API的多個組件(或按功能分組的組件)則顯示成在表示該InkOverlay對象501的方框中引出或進入的箭頭542-558。總的來說,進入InkOverlay對象501方框的箭頭指主要修改該InkOverlay對象501(如通過改變其某個屬性)和/或向該InkOverlay對象501提供信息的API組件(或按功能分組的組件)。從InkOverlav對象501方框引出的箭頭指主要表示由該InkOverlay對象501向其環(huán)境提供的某個標志或某些其它信息的API組件(或按功能分組的組件)。但是,這些箭頭的方向并不意味著限制,因此一個進入InkOverlay對象501的箭頭也并不排除還表示由該InkOverlay對象501向其環(huán)境提供的信息。同樣地,一個從InkOverlay對象501引出的箭頭也并不排除還修改或向InkOverlay對象501提供信息。圖5進一步示出了該InkOverlay對象501的多個屬性502-520。
在該說明性實施例中InkOverlay API具有以下的某些或所有枚舉(包括以其任何組合或子集合)。一個應用姿態(tài)枚舉定義了在一組應用特定的姿態(tài)中設置關注度的值。一個搜集模式枚舉定義了確定InkOverlay對象的搜集模式設定的值。一個事件關注度枚舉定義了哪些事件是開發(fā)者使用InkOverlay對象和/或InkCollector對象所關注的。InkOverlay對象可以用事件關注度枚舉來確定哪些信息將通過事件提供給開發(fā)者。一個鼠標指針枚舉定義了指定所顯示的鼠標指針類型的值。這一枚舉也在InkPicture控件和InkCollector對象中出現(xiàn)。一個覆蓋配屬模式枚舉定義了指定將新的InkOverlay對象配屬到哪里(將InkOverlay對象配屬到窗口中控件和/或文本的后面或前面)的值。當將InkOverlay對象配屬到前面時,意味著墨跡將在窗口中控件和/或文本的前面渲染。當將InkOverlay對象配屬到后面時,意味著墨跡將在直接窗口中渲染,因而在窗口層次中任何其它控件或子窗口的后面。一個覆蓋編輯模式枚舉定義了指定InkOverlay對象應當使用哪種編輯模式(描畫墨跡、刪除墨跡、編輯墨跡)的值。一個擦除器模式枚舉定義了指定當某個編輯模式枚舉設定為刪除時墨跡擦除方式的值。一個系統(tǒng)姿態(tài)枚舉定義了在一組操作系統(tǒng)特定的姿態(tài)中設置關注度的值。
在該說明性實施例中的InkOverlay API還具有以下的一個或多個可以設置并可以返回其所表示信息的屬性(包括以其任何組合或子集合)。一個配屬模式屬性502表示了該對象是配屬在給定窗口的后面還是前面。一個自動重畫屬性503表示了當該窗口失效時InkCollector是否將重新描繪。一個正搜集墨跡屬性504表示該對象是否正忙于搜集墨跡。一個搜集模式屬性505表示了該對象是在只搜集墨跡、只搜集姿態(tài),還是搜集墨跡和姿態(tài)。一個光標搜集相關屬性506表示了對該對象所遇到的光標的搜集。一個描畫特征屬性507表示了在搜集和顯示墨跡時使用的缺省描畫特征。這一屬性所指定的描畫特征是賦予某個新光標的特征,并可以應用于那些在缺省描畫特征設定為無的光標集合中的光標。一個包描述屬性508表示了對InkOverlay對象501的包描述。一個動態(tài)渲染屬性509表示了InkOverlay對象是否將按所搜集的那樣來動態(tài)地渲染墨跡。一個編輯模式屬性510表示了該對象是在墨跡模式、刪除模式還是選擇/編輯模式中。一個InkCollector激活屬性表示了InkCollector是否將搜集筆輸入(發(fā)送的包、在范圍事件中的光標等等)。多個擦除器屬性512表示了墨跡是按筆劃還是按點來擦除,以及墨跡如何擦除,以及擦除器筆尖的寬度。一個窗口句柄屬性513表示了InkOverlay對象501配屬給自己的句柄。一個關聯(lián)Ink對象514表示了與InkOverlay對象相關聯(lián)的Ink對象。邊距屬性515表示了InkOverlay對象501在所配屬的窗口句柄所關聯(lián)的窗口矩形周圍的x軸和y軸邊距(最好是在屏幕坐標系中)。而且,邊距屬性515可以提供獲取與下面所討論的窗口矩形方法555相關聯(lián)的行為的一個可替換手段。一個或多個定制鼠標光標屬性516表示了當前定制鼠標圖標、當鼠標在InkOverlay對象501上(如在該對象的某個可涂墨部分上)時所顯示的鼠標指針類型,以及/或當活動指點設備(如記錄筆204或鼠標102)使所顯示的光標在InkOverlay對象上時所顯示的光標類型。一個渲染器屬性517表示了用來在屏幕上描畫墨跡的渲染器。一個選擇屬性518表示了當前所選擇的墨劃的集合。高對比度墨跡屬性519表示了當該系統(tǒng)在高對比度模式中時墨跡是否將以高對比度(如只有一種顏色)來渲染,以及是否所有選擇UI(如選擇邊框和選擇句柄)都將以高對比度來描畫。一個書寫板屬性520表示了該對象當前用以搜集光標輸入的書寫板。
在該說明性實施例中的InkOverlay API還具有多個相關聯(lián)的事件與方法(包括以其任何組合或子集合)。舉例來說,可以有光標相關事件與方法542、544。這樣的光標相關事件依賴于一個光標(如記錄筆204的筆尖)是否在書寫板環(huán)境的物理探測范圍內,或回應于正物理接觸數(shù)字化書寫板表面(如表面202)的光標而發(fā)生。光標相關方法回應于所發(fā)生的相應光標相關事件而調用。這些特性使開發(fā)者能擴展和重載InkOverlay對象的光標功能。
InkOverlay API可以進一步具有光標按鍵相關事件與方法543。這樣的光標按鍵事件依賴于在光標(如記錄筆204)上的一個按鍵是彈上還是按下而發(fā)生。光標按鍵相關方法回應于所發(fā)生的相應光標按鍵相關事件而調用。這些特性使開發(fā)者能擴展和重載InkOverlay對象的光標按鍵功能。
InkOverlay API可以進一步具有姿態(tài)相關事件與方法545、554。這樣的姿態(tài)相關事件回應于所識別的一個系統(tǒng)姿態(tài)或所識別的一個應用特定姿態(tài)而發(fā)生。某些姿態(tài)相關方法回應于所發(fā)生的相應姿態(tài)相關事件而調用。另一個姿態(tài)相關方法則指定在給定姿態(tài)組中InkOverlay對象的關注度,或獲取該關注度。這些特性使開發(fā)者能擴展和重載InkOverlay對象的姿態(tài)功能。
InkOverlay API可以進一步具有書寫板相關事件與方法546、558。某些書寫板相關事件回應于從該系統(tǒng)所添加或刪除的一個書寫板而發(fā)生。書寫板相關方法回應于所發(fā)生的相應書寫板相關事件而調用。其它的姿態(tài)相關方法558則指定將InkOverlay對象放置到一個全書寫板模式或一個集成書寫板中。在全書寫板模式中(這可以是缺省模式),如果有多個設備配屬于該系統(tǒng),則集成所有的書寫板。由于所有書寫板設備都已集成,則可用的光標可以在這些書寫板設備中的任一個上使用,而每個書寫板將用相同的描畫特征映射到整個屏幕。在集成書寫板模式中,一個集成的書寫板風格計算機輸入表面與顯示屏共享同一表面;這意味著整個書寫板風格計算機輸入表面映射整個屏幕,實現(xiàn)窗口的自動更新。
InkOverlay API可以進一步具有包相關事件與方法547。這樣的包相關事件回應于新描畫的包和新發(fā)送的包而發(fā)生。包相關方法回應于所發(fā)生的相應包相關事件而調用。這些特性可以使開發(fā)者能擴展和重載InkOverlay對象的記錄筆功能和響應。
InkOverlay API還可以具有描繪相關事件與方法548。這樣的描繪相關事件只在InkOverlay對象501隨同墨跡的任何選擇而描繪墨跡前發(fā)生,因而使開發(fā)者有機會改變墨跡的外觀或改變墨跡本身。一個描繪相關事件還可以回應于完全描繪其某個子集墨跡的InkOverlay對象501而發(fā)生,因而使開發(fā)者能在已描畫的墨跡外描畫些東西。描繪相關方法回應于所發(fā)生的相應描繪相關事件而調用。這一功能可以使開發(fā)者能擴展和重載InkOverlay對象的墨跡渲染行為。這些描繪相關方法還可以事實上不成為InkOverlay對象的一部分,但可以對開發(fā)者實現(xiàn)這些方法并將其與InkOverlay對象連接有用,這樣它們就能回應于所觸發(fā)的描繪相關事件而恰當?shù)卣{用。
InkOverlay API還可以具有選擇相關事件與方法549。某些選擇相關事件在選擇變化前發(fā)生,因而提供開發(fā)者機會來改變將要發(fā)生的選擇變化。一個選擇相關事件還可以回應于完全變化(程序化地或者作為最終用戶動作的結果)的選擇而發(fā)生。其它的選擇相關事件回應于當前選擇的位置將要移動或在當前選擇的位置變化時發(fā)生。還有其它的選擇相關事件回應于將要變化的當前選擇尺寸或已經變化的當前選擇尺寸而發(fā)生。選擇相關方法回應于所發(fā)生的相應選擇相關事件而調用。這些特性可以使開發(fā)者能擴展和重載InkOverlay對象的選擇和編輯功能。
InkOverlay API可以進一步具有墨劃相關事件與方法550。一個這樣的筆劃相關事件回應于用戶在任何書寫板上描畫一個新的筆劃而發(fā)生。其它筆劃相關事件回應于將要刪除的筆劃或已經刪除的筆劃而發(fā)生。筆劃相關方法回應于所發(fā)生的相應筆劃相關事件而調用。這些特性可以使開發(fā)者能擴展和重載InkOverlay對象的墨跡擦除功能。
InkOverlay API可以具有多種進一步的混雜的方法。舉例來說,一個描畫方法552可以對在所提供設備環(huán)境(如屏幕、打印機等)中的某個特定矩形而描畫墨跡和選擇UI。其它方法553設定某特定InkOverlay事件的當前狀態(tài)(如該事件正被偵聽或使用),或獲取該當前狀態(tài)。還有其它方法555指定窗口矩形以(在窗口坐標系中)設定墨跡描畫在什么內,或獲取該窗口矩形。另一個方法556確定某個給定的坐標符合調整尺寸句柄、所選擇區(qū)域的內部部分或根本無選擇之一。一個構造器557指定配屬某特定窗口句柄的新的InkOverlay對象的創(chuàng)建,該窗口句柄可以在某特定書寫板上,并將一個窗口輸入矩形映射到一個書寫板輸入矩形。
在該說明性實施例中的InkOverlay API還可以具有多個邊距常量(未示出)。第一個邊距常量返回一個值,指定當筆劃在缺省邊距外時是否修剪它們。第二個邊距常量返回由邊距屬性所使用的缺省邊距。這些常量也表現(xiàn)成在InkCollector對象和InkPicture控件中的屬性。
InkPicture控件如前面所提及的那樣,可以創(chuàng)建一個控件(在此稱為InkPicture控件)(可以是如一個ActiveX控件),使開發(fā)者能添加一個用于墨跡搜集和編輯的窗口。InkPicture控件提供了將一幅圖像放置在用戶可以對其添加墨跡的某個應用或網(wǎng)頁中的能力。該圖像可以是任何格式,如.jpg、.bmp、.png或.gif格式。InkPicture控件主要可以用于墨跡不必需識別成文本,但可以替換地或另外地存儲成墨跡的場景。在某一說明性實施例中,用于InkPicture控件的運行期用戶界面是一個具有如一個不透明背景(如單色、圖片背景或這兩者)并包含不透明或半透明墨跡的窗口。在某一說明性實施例中,InkPicture控件以一個ActiveX或其它控件包裹InkOverlay對象。
InkPicture API參照圖6,示出了一個說明性的InkPicture對象601。InkPicture控件601披露了InkOverlay對象501的某些或所有API組件,以及在圖6中所示出的另外的某些或所有API組件。舉例來說,在某一說明性實施例中,InkPicture控件601可以實現(xiàn)對所有InkOverlay API組件的訪問,但配屬模式屬性502和/或窗口句柄屬性513除外。如下面所討論的那樣,InkPicture控件601可以有其自己的API,添加InkPicture API的功能。在某些實施例中,InkPicture控件601可以是一個ActiveX控件,并可以添加以下與InkOverlay對象501相對照的功能鍵盤事件、控件調整尺寸事件、另外的鼠標事件和/或背景顏色與圖像相關屬性。而且,InkPicture控件601可以從Microsoft PictureBox繼承。舉例來說,PictureBox可以實現(xiàn)在此關于InkPicture控件601所討論的某些或所有屬性,如背景圖像。
在圖6中,InkPicture控件601以一個方框表示,而一個API的多個組件(或按功能分組的組件)則顯示成在表示該InkPicture控件601的方框中引出或進入的箭頭640-658??偟膩碚f,進入InkPicture控件601方框的箭頭指主要修改該InkPicture控件601(如通過改變其某個屬性)和/或向該InkPicture控件601提供信息的API組件(或按功能分組的組件)。從InkPicture控件601方框引出的箭頭指主要表示由該InkPicture控件601向其環(huán)境提供的某個標志或某些其它信息的API組件(或按功能分組的組件)。但是,這些箭頭的方向并不意味著限制,因此一個進入InkPicture控件601的箭頭也并不排除還表示由該InkPicture控件601向其環(huán)境提供的信息。同樣地,一個從InkPicture控件601引出的箭頭也并不排除還修改或向InkPicture控件601提供信息。圖6進一步示出了該InkPicture控件601的多個屬性602-626。
在某一說明性實施例中,用于InkPicture控件601的API可以具有一個或多個枚舉(未示出)。舉例來說,一個墨跡圖片尺寸枚舉定義了指定一個背景圖片如何在InkPicture控件內運轉的值,如該圖片是否將自動調整尺寸以適于在該控件內或在該控件內居中,或是否將以其正常尺寸顯示在該控件內,或是否在該控件內伸展。還有,一個用戶界面枚舉定義了指定用于InkPicture控件的用戶界面的狀態(tài)的值,如焦點和鍵盤提示的狀態(tài)、在狀態(tài)變化后是否顯示焦點矩形,以及/或在狀態(tài)變化后是否對鍵盤提示加下劃線。
在該說明性實施例中,用于InkPicture控件601的API可以具有多個相關聯(lián)的屬性602-626中的某些或全部(包括以其任何組合或子集合)。舉例來說,一個或多個可訪問性屬性602表示了由可訪問性客戶端應用所使用的InkPicture控件的名稱和描述,以及InkPicture控件的可訪問角色。一個錨定屬性603表示了InkPicture控件的哪條邊與其容器的邊相錨定。一個或多個背景屬性604表示了用于InkPicture控件的背景顏色和在InkPicture控件中顯示的背景圖像。一個邊沿風格屬性605表示了用于InkPicture控件的邊沿的風格。一個校驗屬性606表示了在任何接收到焦點時要求校驗的控件上InkPicture控件是否使校驗進行。一個容器屬性607表示了包含InkPicture控件的容器。一個塢屬性608表示了InkPicture控件塢靠父容器的哪條或哪些條邊。一個或多個拖拽屬性609表示了當指針在拖-放操作時所顯示的圖標和對拖-放操作是使用手動還是自動拖拽模式。一個激活屬性610表示了InkPicture控件是否可獲得焦點。一個或多個維度屬性611表示了InkPicture控件的高度、InkPicture控件的寬度以及InkPicture控件的高、寬兩者。這些維度屬性可以是任何單位,如像素。一個上下文可感幫助屬性612表示了一個對于InkPicture控件的相關上下文標識,并可以用來向某個應用提供上下文可感幫助。一個窗口句柄屬性613表示了墨跡所描畫的窗口的句柄。一個圖像屬性614表示了在InkPicture控件中顯示的圖像。一個控件數(shù)組索引屬性615表示了在一個控件數(shù)組中標識InkPicture控件的編號。一個或多個位置屬性616表示了控件的內左邊緣和其容器的左邊緣之間的距離,和控件的內上邊緣和其容器的上邊緣之間的距離。一個鎖定屬性617表示了InkPicture控件的內容是否可以編輯。一個可視性屬性618表示了InkPicture控件是否是可視的。一個控件名稱屬性619表示了InkPicture控件的名稱。一個對象屬性620表示了與InkPicture控件相應的對象。一個父對象屬性621表示了控件所位于其上的對象。一個尺寸模式屬性622表示了InkPicture控件如何處理圖像的放置和調整尺寸。一個或多個切換屬性623表示了InkPicture控件在其父容器內的切換順序,以及用戶是否可以用Tab鍵來對InkPicture控件提供焦點。一個對象標簽屬性624表示了關于對象的擴展屬性或定制數(shù)據(jù)。一個工具提示屬性625表示了當鼠標(或記錄筆)停留在InkPicture控件上時所顯示的文本。一個幫助屬性626表示了一個與InkPicture控件相關聯(lián)的上下文編號。該幫助屬性626可以用來用“這是什么?”彈出為某個應用提供上下文可感幫助。
在該說明性實施例中的InkPicture API可以進一步具有多個相關聯(lián)的事件與方法(包括以其任何組合或子集合)。舉例來說,一組焦點方法640指定了應當賦予InkPicture控件的焦點。一個或多個焦點事件641回應于InkPicture控件丟失焦點或接收到焦點而發(fā)生。一個用戶界面焦點事件642回應于焦點或鍵盤用戶界面提示變化而發(fā)生。一個z順序方法643指定了InkPicture控件放置在其圖形層次內z順序的前面還是后面。一個控件尺寸事件644回應于InkPicture控件已調整尺寸而發(fā)生。一個尺寸模式事件645回應于尺寸模式屬性622已被改變而發(fā)生。一個調整尺寸/移動方法646指定了InkPicture控件的移動和/或調整尺寸。一個風格事件647對應于InkPicture控件的風格的變化而發(fā)生。一個創(chuàng)建方法648指定了對一個新的InkPicture控件的創(chuàng)建。一個拖拽方法649指定了在InkPicture控件上某個拖拽操作的起始端和/或取消。一個或多個鼠標/記錄筆按鍵事件650回應于鼠標/記錄筆的指針在InkPicture控件上而且某個鼠標按鍵(或某個記錄筆按鍵)被按下或釋放而發(fā)生。一個或多個點擊事件651回應于InkPicture控件上被點擊或雙擊而發(fā)生。一個或多個鼠標進入/退出事件652回應于鼠標/記錄筆指針進入或退出與InkPicture控件相關聯(lián)的顯示區(qū)域而發(fā)生。一個或多個鼠標移動事件653回應于鼠標/記錄筆指針在InkPicture控件上移動或在InkPicture控件上盤旋而發(fā)生。一個鼠標滾輪事件654回應于當InkPicture控件具有焦點時鼠標滾輪的移動而發(fā)生。一個拖上事件655回應于某個對象被拖拽到InkPicture控件的邊界上而發(fā)生。一個拖-放事件656回應于所完成的某個拖-放操作而發(fā)生。一個或多個句柄方法657產生回應于所被創(chuàng)建或破壞的某個句柄的事件。一個或多個按鍵事件658回應于當InkPicture控件具有焦點時某個按鍵被按下或釋放而發(fā)生。InkPicture控件601可以進一步發(fā)送前面關于InkOverlay對象501所討論的任何或所有事件。
電子墨跡的覆蓋參照圖7,可以產生或者提供一份文檔701。在圖7的說明性實施例中的文檔是一份文本文檔。然而,術語文檔應當在此寬泛地解釋成任何其它類型的文檔,如(但不限于)字處理文檔(如使用Microsoft WORD所產生的)、圖像文檔、圖形文檔、文本加圖形文檔、掃描的紙文檔、電子表格文檔、照片以及/或具有多個數(shù)據(jù)域的表單。在這里用來描述本發(fā)明時,術語“文檔”還在其范圍內包括某種軟件應用。可以定義一個InkOverlay對象和/或一個InkPicture控件,來創(chuàng)建在某些或所有文檔701上放置的一個或多個涂墨表面(如窗口)。該窗口或其它涂墨表面最好是透明的(全透明的或半透明的),這樣下面的文檔701就是可見的。但是,某些或所有窗口也可以是不透明的,并/或可以具有某種背景圖像和/或顏色(如通過使用說明性InkPicture控件的一個或多個說明性背景屬性604)。在使用一幅背景圖像時,該背景圖像可以是該文檔本身,以作為對在一份單獨的文檔上覆蓋該窗口的一種替換。該窗口可以可選擇地具有一條可以是不透明的或可見的邊沿(在此說明性地圖示成虛線)。當用戶在屏幕上該窗口區(qū)域內用記錄筆204書寫時,墨跡數(shù)據(jù)從手寫來搜集,并在該窗口中被渲染和顯示成電子墨跡703。如此,就表現(xiàn)成手寫墨跡被書寫在該文檔701上。墨跡數(shù)據(jù)還可以存儲在某個對象中,如在墨跡對象中。還有,在渲染時和/或渲染開始時和/或墨跡渲染完成后,可以觸發(fā)一個或多個事件(如描繪相關事件548)。
用戶可以進一步以多種方式選擇已渲染墨跡703的一部分和改變所選擇的部分。當選擇了墨跡703的至少一部分(如通過用記錄筆204在所選擇的部分畫圈)時,可以存儲對所選擇部分的一個指涉(reference)。選擇部分可以移動和/或調整尺寸,在這種情況下,在該選擇移動或調整尺寸時,和/或在移動或調整尺寸開始時,和/或該選擇完成移動或調整尺寸后,都可以觸發(fā)一個或多個事件,如事件549。可以進一步刪除某些或所有墨跡703(如一個或多個筆劃)。例如,用戶和/或某個應用可以請求刪除墨跡703的至少一部分,而在墨跡刪除時,和/或墨跡開始刪除時,和/或墨跡刪除后,可以觸發(fā)一個或多個事件,如事件551。
考慮到上面這些,應用開發(fā)者可以對InkOverlay對象和/或InkPicture控件內的墨跡進行程序化的訪問(即能夠直接更改內部結構,而不必需通過用戶輸入或控件API)。開發(fā)者和/或用戶可以進一步能夠更改對墨跡的選擇和/或多種其它的屬性。而后InkOverlay對象可以管理建立書寫板環(huán)境、偵聽數(shù)字化儀事件以及/或搜集并根據(jù)其當前模式解釋墨劃的內部細節(jié)。
舉例來說,開發(fā)者可以容易地訪問與新筆劃相關聯(lián)的事件,并可以通過從該新筆劃獲取位置元數(shù)據(jù)來將該新筆劃的位置和在下面的文檔701中的文本和/或對象相比較。這樣,通過訪問在此所描述的多種時間與方法,應用開發(fā)者可以對某個應用添加數(shù)據(jù)結構,以實現(xiàn)將墨跡映射到應用數(shù)據(jù)。這就可以使(例如)姿態(tài)和/或由用戶和/或某個應用所發(fā)出其它命令能通過InkOverlay對象來更改下面的文檔701。例如,如在圖7中所示出的那樣,在文檔701中文本的一部分被以墨跡畫圈,而一個很大的“B”被描畫在該圓圈中。這可以解釋成一個命令,將在畫圈的文檔701中的文本更改成粗體的文本?;蛘?,可以如在圖7中所示出的那樣,用一個姿態(tài)和/或其它命令刪除和/或插入一個字詞(如刪除在下面文檔701中的字詞“defence”并以新插入的字詞“defense”代替)。在圖8中示出了這些姿態(tài)的結果。
開發(fā)者可以進一步容易地配置他或她的應用,以在下面文檔701中的下面的文本和/或對象移動時,在InkOverlay對象中重新排列墨跡。這可以(例如)通過在InkOverlay對象窗口中定位墨劃并移動這些墨劃和/或調整這些墨劃的尺寸來達成。
開發(fā)者可以通過偵聽在此所描述的多種事件,進一步容易地擴展InkOverlay對象的本身的編輯功能,以包括多種概念(如增亮)。這可以(例如)通過重載缺省的描畫特征屬性來達成。開發(fā)者還可以添加功能,如可選擇的只讀筆劃(通過有選擇地拒絕對特定筆劃的用戶操作),以及解析(通過將筆劃送入某個識別器)和/或自然的用戶姿態(tài)如用記錄筆204的后退來擦除(通過偵聽“新光標”事件并切換InkOverlay控件的模式)。
還有,在任一時間可以在文檔701上放置多于一個的InkOverlay對象和/或InkPicture控件,而這多個對象和/或控件可以分層。參照圖9,可以實例化(例如)第二個InkOverlay對象,并可以具有有第二條可選邊沿901的第二個窗口。同一用戶或另一用戶可以在第二個InkOverlay對象窗口上書寫墨跡902,而相關聯(lián)的墨跡數(shù)據(jù)可以存儲在InkOverlay對象中,并/或在第二個InkOverlay對象的窗口中渲染??商鎿Q的是,用戶可以將墨跡書寫到第一個InkOverlay對象窗口中某個第一個和第二個窗口重疊的位置,而該墨跡可以被發(fā)送給第二個窗口。
雖然通過示例方式示出了在此所描述的具體表現(xiàn)本發(fā)明多個方面的示例性系統(tǒng)和方法,仍將明白(當然)本發(fā)明并不限于這些實施例。本領域的普通技術人員可能進行修改(特別是按照前面的教導)。舉例而言,前述實施例的每個組件都可以單獨使用,或與其它實施例的組件結合使用。盡管本發(fā)明已用所附的權利要求來定義,但這些權利要求是示例性的,而本發(fā)明需要以任何組合或子集合來包括在此所描述的組件和步驟。因此,對定義本發(fā)明存在任意數(shù)量的可替換組合,結合了來自本說明(包括以多種組合或子集合的描述、權利要求和附圖)的一個或多個組件。按照本發(fā)明,對本領域的普通技術人員而言,很顯然可以利用本發(fā)明各方面的可替換組合(單獨或結合在此所定義的一個或多個組件或步驟),作為對本發(fā)明的修改或改動,或作為本發(fā)明的一部分。須理解,在此所包含的對本發(fā)明的書面描述能覆蓋所有這樣的修改和改動。還有,應當認識到,盡管在此提供了對象和其它API組件的多個名稱,但這樣的名稱僅僅是說明性的,任何名稱都可以不背離本發(fā)明的范圍而使用。
權利要求
1.一種用于在一篇文檔上覆蓋墨跡的方法,其特征在于,該方法包含步驟在該文檔上產生一個透明的涂墨表面;在該涂墨表面中搜集墨跡數(shù)據(jù);以及在該涂墨表面中將該墨跡數(shù)據(jù)渲染成已渲染的墨跡。
2.如權利要求1所述的方法,其特征在于,包括將該墨跡數(shù)據(jù)存儲成一個對象的步驟。
3.如權利要求1所述的方法,其特征在于,該涂墨表面是半透明的。
4.如權利要求1所述的方法,其特征在于,該涂墨表面具有一條不透明的邊沿。
5.如權利要求1所述的方法,其特征在于,該文檔包含一篇文本文檔。
6.如權利要求1所述的方法,其特征在于,該文檔包含一篇MicrosoftWORD文檔。
7.如權利要求1所述的方法,其特征在于,還包括步驟在渲染步驟中產生第一個事件;以及在渲染步驟完成后產生第二個事件。
8.如權利要求1所述的方法,其特征在于,還包括步驟接收一個刪除該所渲染墨跡的至少一部分的請求;回應于該請求產生第一個事件;刪除該所渲染墨跡的該至少一部分;以及在刪除步驟完成后產生第二個事件。
9.如權利要求1所述的方法,其特征在于,還包括步驟接收一個選擇該所渲染墨跡的至少一部分的請求;選擇該所渲染墨跡的該至少一部分;以及存儲對該墨跡的該至少一部分的一個指涉(reference)。
10.如權利要求1所述的方法,其特征在于,還包括步驟選擇該所渲染墨跡的至少一部分;接收一個改變該所渲染墨跡的該至少一部分的請求;回應于該請求產生第一個事件;改變該所渲染墨跡的該至少一部分;以及在改變步驟完成后產生第二個事件。
11.如權利要求10所述的方法,其特征在于,所改變的步驟包括改變所選擇的該所渲染墨跡的該至少一部分的數(shù)量。
12.如權利要求10所述的方法,其特征在于,所改變的步驟包括將該所渲染墨跡的該至少一部分改變成該所渲染墨跡的另外至少一部分。
13.一種用于在一篇文檔上覆蓋墨跡的方法,其特征在于,該方法包含步驟產生一個窗口,該窗口具有一個包含該文檔的至少一部分的背景;在該窗口中搜集墨跡數(shù)據(jù);以及在該窗口中將該墨跡數(shù)據(jù)渲染成已渲染的墨跡。
全文摘要
在一篇文檔上覆蓋電子墨跡。一個典型的場景可以是其將有用于以電子墨跡標記一篇文檔,如通過在下面的文檔上進行書面注釋、描畫等等。在某些實施例中,開發(fā)者可以容易地定義一個涂墨表面,如在一篇文檔上的一個透明或不透明的窗口。該涂墨表面可以作為一個輸入表面,這樣用戶可以書寫在該涂墨表面上,如此就表現(xiàn)成該文檔自身被標記。
文檔編號G06K9/22GK1461986SQ0313144
公開日2003年12月17日 申請日期2003年5月14日 優(yōu)先權日2002年5月14日
發(fā)明者A·古納里斯, S·道奇, T·A·杰林斯基, A·J·戈爾德貝格, E·A·齊姆伯格, T·A·托賽特, R·L·錢伯斯, T·H·坎納貝爾, R·巴拉茲, S·巴塔查里亞, M·K·比斯瓦斯, B·德雷賽維克, S·A·費希爾, B·E·克蘭茲, S·M·頌吉 申請人:微軟公司