使用 RealTimeStylus 類別
RealTimeStylus類別是 StylusInput 應用程式程式設計介面的一部分, (API) 。 下列各節說明 RealTimeStylus 類別和手寫筆Input API 的重要元素。
具現化 RealTimeStylus 類別
當您建立 RealTimeStylus 物件時,您可以選擇將它附加至視窗控制碼或控制項。 將 RealTimeStylus 物件附加至視窗控制碼需要額外的許可權。 如需這些許可權的詳細資訊,請參閱 手寫筆Input API 的部分信任考慮。
注意
您無法將 RealTimeStylus 物件附加至不同進程中的視窗或控制項。
如果您使用預設建構函式,您可以建立只能接受另一個RealTimeStylus 物件的輸入 RealTimeStylus物件。 如需連接兩 個 RealTimeStylus 物件的詳細資訊,請參閱 Cascaded RealTimeStylus 模型。
RealTimeStylus物件會實作IDisposable介面。
擴充 RealTimeStylus 類別
為了讓外掛程式能夠與平板電腦手寫筆中的資料流程互動,RealTimeStylus物件會維護兩個外掛程式集合,這些集合可由 C++ 中的GetStylusSyncPlugin 和 GetStylusAsyncPlugin方法存取,以及由 SyncPluginCollection 和 AsyncPluginCollection屬性存取。 您可以在適當的屬性內呼叫集合的 AddStylusSyncPlugin 或 AddStylusAsyncPlugin 方法,以新增外掛程式。 如需建立和使用外掛程式的詳細資訊,請參閱 外掛程式和 RealTimeStylus 類別。 如需決定是否要針對特定工作建立同步或非同步外掛程式的資訊,請參閱手寫筆的 執行緒考慮 和 手寫筆Input API 的效能考慮。
同步外掛程式必須實作 IStylusSyncPlugin 介面,而非同步外掛程式必須實作 IStylusAsyncPlugin 介面。 每個外掛程式都有 IStylusSyncPlugin.DataInterest 或 IStylusAsyncPlugin.DataInterest 屬性。 RealTimeStylus物件只會針對外掛程式已訂閱的方法呼叫外掛程式的通知方法。 如需通知方法的詳細資訊,請參閱 外掛程式資料和 RealTimeStylus 類別。
RealTimeStylus物件會實作IStylusAsyncPlugin介面。 具現化 RealTimeStylus 物件的唯一方法是接受另一個 RealTimeStylus 物件的輸入,是使用預設建構函式並實作串聯 的 RealTimeStylus 模型。 如需連接兩 個 RealTimeStylus 物件的詳細資訊,請參閱 Cascaded RealTimeStylus 模型。
RealTimeStylus物件有兩個內部佇列,其中包含平板電腦畫筆資料、輸入佇列和輸出佇列。 畫筆資料會轉換成 Microsoft.StylusInput.PluginData 命名空間中類別的實例。 下列清單描述 RealTimeStylus 物件如何處理平板電腦手寫筆資料。
- RealTimeStylus物件會先在其輸入佇列上檢查外掛程式資料物件,然後從平板電腦手寫筆資料流程檢查。
- RealTimeStylus物件會將一個外掛程式資料物件傳送至其同步外掛程式集合中的物件。 每個同步外掛程式都可以將資料新增至輸入或輸出佇列。
- 一旦外掛程式資料物件傳送至同步外掛程式集合的所有成員,即會將外掛程式資料物件放在 RealTimeStylus 物件的輸出佇列上。
- RealTimeStylus物件接著會檢查要處理的下一個外掛程式資料物件。
- 雖然 RealTimeStylus 物件的輸出佇列包含資料, 但 RealTimeStylus 物件會將一個外掛程式資料物件從其輸出佇列傳送至其非同步外掛程式集合中的物件。 每個非同步外掛程式都可以將資料新增至輸入或輸出佇列,但因為非同步外掛程式會在使用者介面上執行, (UI) 執行緒執行,因此資料會新增至佇列,以與 RealTimeStylus 物件正在處理的目前畫筆資料相關,而不是與非同步外掛程式正在處理的資料有關。
下圖說明透過 RealTimeStylus 物件及其外掛程式集合的平板電腦手寫筆資料流程程。
在此圖表中,以字母為 「A」 和 「B」 的圓形代表已新增至 RealTimeStylus 物件的輸出佇列且尚未傳送至非同步外掛程式集合的平板電腦畫筆資料。 以 「C」 表示 RealTimeStylus 物件目前正在處理的平板電腦手寫筆資料。 它會傳送至同步外掛程式集合,並放在輸出佇列上。 空圓形代表輸出佇列中新增未來平板電腦手寫筆資料的位置。
如需如何將特定資料新增至佇列和處理的詳細資訊,請參閱 外掛程式資料和 RealTimeStylus 類別。
以下是在收集筆跡的表單上使用 RealTimeStylus 物件的最小案例。
- 建立實作 IStylusAsyncPlugin 介面的表單。
- 建立附加至表單上控制項的 RealTimeStylus 物件。
- 在表單的 IStylusAsyncPlugin.DataInterest 屬性中設定 StylusDown、Packets 和 StylusUp 通知的興趣。
- 在表單的 StylusDown、 Packets和 StylusUp 方法中,新增程式碼來處理從表單 的 RealTimeStylus 物件傳送的手寫筆、封包和手寫筆通知。
如需這類應用程式的範例,請參閱 RealTimeStylus Ink 集合範例。
使用平板電腦物件
每個啟用 的 RealTimeStylus 物件都會維護其可與其互動之 平板電腦 物件的唯一識別碼清單。 RealTimeStylus物件會公開兩個在唯一識別碼與Tablet物件之間翻譯的方法:GetTabletCoNtextIdFromTablet和GetTabletFromTabletCoNtextId方法。
Managed 程式碼中的 TabletPropertyDescription 物件 () 包含 PacketPropertyId 屬性和 TabletPropertyMetrics 結構,描述特定 Tablet 物件之屬性的範圍、解析度和單位。 RealTimeStylus物件的GetDesiredPacketDescription方法會傳回全域唯一識別碼的陣列, (GUID) ,當這些封包屬性可供使用時,RealTimeStylus物件轉送至其外掛程式。 若要修改 RealTimeStylus 物件傳遞至其外掛程式的封包屬性集,請呼叫 RealTimeStylus 物件的 SetDesiredPacketDescription 方法。 RealTimeStylus物件的 Managed 程式碼) 中的GetTabletPropertyDescriptionCollection方法 (會採用唯一的平板電腦識別碼,並傳回TabletPropertyDescription物件的集合。 這些封包屬性代表 由 GetDesiredPacketDescription 方法傳回之平板電腦所支援之屬性的子集。
如需標準封包屬性 GUID 的清單,請參閱 PacketPropertyGuids 常數 類別。
特殊考慮
下列清單描述搭配Tablet物件使用RealTimeStylus物件時要考慮的其他重點。
- 只有在Tablet物件停用時,才能呼叫SetDesiredPacketDescription方法。 RealTimeStylus物件可能會修改所需的封包屬性清單;因此,在呼叫SetDesiredPacketDescription 方法之後呼叫 GetDesiredPacketDescription方法,以判斷RealTimeStylus物件可以轉送至其外掛程式的封包屬性。平板電腦只保證支援PacketProperty的X、Y和PacketStatus值。 因此,您的外掛程式設計可能需要考慮接收的封包屬性比所需少。
- 只有在啟用RealTimeStylus物件時,才能呼叫 Managed 程式碼) 的GetTabletPropertyDescriptionCollection方法 (。 由於通知可以在 已停用 RealTimeStylus 物件之後傳送至非同步外掛程式,因此您可能需要快取每個 Tablet 物件的資訊。 GetTabletPropertyDescriptionCollection 方法會傳回指定平板電腦所支援所需封包屬性的清單。
- 啟用 RealTimeStylus 物件時,每個外掛程式都會收到其 RealTimeStylusEnabled 方法的呼叫。 在通知中傳遞的 RealTimeStylusEnabledData 物件包含 啟用 RealTimeStylus 物件時可用平板電腦的內容識別碼集合。
- 當啟用RealTimeStylus 物件時,RealTimeStylus物件可以使用的平板電腦新增或移除時,RealTimeStylus物件會通知其外掛程式已新增或移除Tablet物件。 如需詳細資訊,請參閱 外掛程式資料和 RealTimeStylus 類別。
使用平板電腦畫筆
RealTimeStylus物件會將平板電腦手寫筆的相關資訊傳遞至許多通知方法中的外掛程式。 平板電腦手寫筆的相關資訊是由 Stylus 物件表示,可透過 GetStyluses 方法取得。 這個物件是收集資料時平板電腦手寫筆的標記法。 因為外掛程式會接收平板電腦手寫筆資料做為平板電腦畫筆資料流程的一部分,所以外掛程式應該使用手寫筆物件中的資訊,而不是透過 Cursor 類別檢查特定平板電腦手寫筆的目前狀態。 如需平板電腦手寫筆和平板電腦手寫筆按鈕資料傳遞至外掛程式的相關資訊,請參閱 外掛程式資料和 RealTimeStylus 類別。
若要取得自上次啟用後,RealTimeStylus物件所遇到的手寫筆物件的陣列,請使用RealTimeStylus物件的GetStyluses方法。
相關主題