共用方式為


直接作

直接作 API 可讓您建立絕佳的平移、縮放和拖曳用戶體驗。 若要這樣做,它會處理區域或物件的觸控輸入、產生輸出轉換,並將轉換套用至UI元素。 您可以使用直接作將回應性優化,並透過線程外輸入處理、選擇性的線程外輸入點擊測試,以及輸入/輸出預測來降低延遲。

任何使用直接作來處理觸控互動的應用程式都會顯示流暢的 Windows 8 動畫和互動意見反應行為,這些行為符合 指導方針,以取得常見的用戶互動

開發人員物件

直接作 API 適用於瞭解 C/C++的資深開發人員,對 元件物件模型 (COM)有紮實的了解,並且熟悉 Windows 程式設計概念。

運行時間需求

直接作是在 Windows 8 中引進的。 它同時包含在32位和64位版本中。

為何使用 DirectManipulation

以簡單且一致的方式處理互動

直接作的運作方式是預先宣告區域或對象的行為和互動。 例如,網頁通常會設定為平移和縮放。 在運行時間,輸入接著會透過簡單的 API 呼叫與此區域/對象產生關聯。 從這一點起,直接作會執行處理輸入、套用條件約束和個性,以及產生輸出轉換的所有繁重工作。

建置回應式觸控應用程式

為了優化回應性並將延遲降到最低,直接作處理會在與UI線程分開的獨立線程上發生。 因此,輸出轉換可以平行執行至UI線程上的活動。 UI 線程活動可能包含應用程式邏輯、轉譯、版面配置,以及處理器上耗用迴圈的任何其他專案。

實作彈性

直接作隨附的介面提供輸入處理、互動辨識、意見反應通知和UI更新的完整支援。 介面也會納入系統服務,例如 DirectComposition

基本概念

最基本的直接作實作包含 檢視區內容,以及 互動。 檢視區 是能夠接收和處理使用者互動輸入的區域。 這也是使用者可以看到的內容區域。 內容 是使用者可以看到的實際物件,以及回應使用者互動時移動或調整的內容。 直接作所支援的主要使用者 互動(也稱為 )。是移動瀏覽和縮放。 這些互動會分別將翻譯或縮放轉換套用至檢視區內的內容。 您可以在單一視窗中設定多個檢視區(每個檢視區都有自己的內容),以建立豐富的UI體驗。

此圖顯示移動流覽前後的基本直接作實作。

移動流覽前後的基本直接作實作。

在直接作初始化期間,DCompDirectManipulationCompositor 物件會具現化並與 Direct Manipulation 相關聯。 這個對像是 DirectComposition的包裝函式,這是系統撰寫器。 物件負責套用輸出轉換和驅動視覺更新。

聯繫人代表由 WM/_POINTERDOWN讯息中提供的 pointerId 識別的觸控點。 收到 WM_POINTERDOWN 訊息時,應用程式會呼叫 setContact 。 應用程式會通知直接作應處理的聯繫人,以及應回應這些聯繫人的檢視區。 鍵盤和滑鼠輸入具有特殊的 pointerId 值,以便直接作適當地處理它們。

在上述基本案例中,當 SetContact 時,會發生一些情況:

  • 當使用者執行平移時,會傳送 WM/_POINTERCAPTURECHANGED 訊息給應用程式,以通知直接作已取用聯繫人。
  • 當使用者移動移動時,檢視區會引發 DirectComposition 包裝函式所使用的更新事件,以驅動畫面的視覺更新。 對檢視區中的使用者移動流覽,內容會顯示在聯繫人下方順暢移動。
  • 當使用者抬起聯繫人時,使用者看到內容在轉換成慣性動畫時繼續移動,逐漸減速,直到到達最後的休息位置。

處理鍵盤和滑鼠輸入

直接作允許透過 ProcessInput API,從應用程式 UI 線程手動轉送鍵盤和滑鼠訊息,讓直接作可以適當地處理它們。

DirectManipulation 和 HWND

直接作與 Win32 HWND 相關聯,以便接收和處理該視窗的指標輸入訊息。 當 Direct Manipulation 計算輸出值時,它會對應用程式中實作的直接作 元件物件模型 (COM) 對象進行異步回呼。 這些回呼會通知應用程式已套用至 物件的轉換。 直接作是在指定的 HWND 上啟動,方法是呼叫 Activate

支援檔