共用方式為


筆跡資料

收集筆跡之後,應用程式就可以管理、操作和/或將該資料傳送至其他媒體。 選取、複製、移動、儲存、檢視和改變筆跡的動作會在 Ink 物件及其自主成員上發生,例如 Strokes 集合和 Stroke 物件。

注意

使用Real-Time手寫筆,應用程式可以選擇以自己的格式維護資料 (,例如儲存筆劃) 。

 

筆跡、筆劃和封包

Ink物件是管理、操作及儲存從InkCollector物件收集的輸入的基本資料類型。 Ink物件包含一或多個Stroke物件,以及用來管理和操作這些筆劃的一般方法和屬性。 筆劃定義為在單一畫筆、手寫筆移動和手寫筆上順序中擷取的資料集。 筆劃資料包含封包的集合。 封包是平板電腦裝置在每個範例點傳送的資料集。 此資料包含座標、手寫筆壓力、手寫筆角度,以及硬體可以傳輸的任何其他資訊。 Stroke物件的PacketDescription屬性描述平板電腦產生的封包。

中風

您可以使用Ink物件的Strokes屬性,取得Ink物件中筆劃的快照集。 Strokes屬性是在讀取 Strokes屬性時,Ink物件中筆劃的參考集合。 如果筆劃後續新增至 Ink 物件或刪除筆劃,則先前取得的 Strokes 集合不會更新。 此外, Strokes 屬性是值,而且就像任何值一樣,除非指派給變數,否則超出範圍。

若要讓Strokes屬性與Ink物件保持同步,請將它包裝在Strokes 集合上的 StrokesAddedStrokesRemoved事件的事件處理常式中。 當引發任一事件時,處理常式應該會取得 Strokes 屬性的新複本。 請小心不要將事件處理常式新增至引發事件之前的範圍不足的 Strokes 集合。

請注意,在此範例中, theAddedStrokesIDs 會以處理常式中 StrokesAdded_Event 筆劃屬性的新複本進行更新。

public void StrokesAdded_Event(object sender, StrokesEventArgs e)
{
    int [] theAddedStrokesIDs = e.StrokeIds;
    theListBox.Items.Clear();
    foreach (int i in theAddedStrokesIDs)
    {
        theListBox.Items.Add("Added Stroke ID: " + i.ToString());
    }
}

PacketDescription 屬性

Ink物件的PacketDescription屬性會定義應用程式從平板電腦裝置取得的每個封包中的資訊集。 此資訊通常包含座標,但可以根據平板電腦數位板的功能) ,例如手寫筆壓力或畫筆角度,包含更詳細的資訊 (。 藉由使用 DesiredPacketDescription 屬性) (在收集任何筆跡之前,在 InkCollectorInkOverlay 物件上設定封包描述,即可完全控制您想要接收的平板電腦裝置屬性。

擴充屬性

擴充屬性提供將應用程式定義資料附加至 Ink 和其他物件的機制。 如需擴充屬性的詳細資訊,請參閱 ExtendedProperties 集合。

筆跡轉譯

Renderer物件負責轉譯Ink。 假設有適當的平板電腦內容, Renderer 物件可以將筆跡空間座標組應至圖元、套用檢視轉換,以及在螢幕上和印表機上顯示筆跡。 Draw 和DrawStroke方法是轉譯筆跡的主要方法。 如需在視窗中顯示筆跡的詳細資訊,請參閱 Renderer 物件。

Cusps

筆劃通常會在畫筆降低至繪圖介面時開始,並在手寫筆引發時結束。 在筆劃中,尖峰、角度和方向的根本變更稱為提示。 筆劃的端點也會被視為提示。 例如,大寫字母 「L」 有三個提示,一個位於中間,一個位於每個結尾。

輸入筆劃時,通常會使用 Bezier (或多邊線) 曲線來平滑轉譯。 Bezier 曲線可能會將提示轉換成小型迴圈。 例如,擷取字母 「i」 的尖峰可能很平滑,以類似 cursive 「e」。 為避免這種情況,Microsoft 轉譯器具有「預先 Bezier」階段,以不同方式處理提示。

Cusps 也可以用來將 Stroke 物件細分成可清除的單位。 例如,選取大寫 「L」 的垂直側可能會表示只清除該側邊。 要清除的筆劃部分會是兩個提示之間的部分。