共用方式為


操作和慣性概觀

操作讓使用者可以透過操作工具移動、旋轉使用者介面 (UI) 和調整其大小。 操作工具表示滑鼠,或是可進行觸控時的手寫筆或手指。

慣性會模擬移動中 UI 項目所受到的摩擦力,藉以模擬真實世界中的移動行為。 這會讓項目的移動速度 (線性速度和角速度) 逐漸變慢到停止為止。 本文會簡介 .NET Framework 的操作和慣性。

操作

操作會將操作工具的集合當成單一複合物件使用。 應用程式可以追蹤複合物件的變更,而不是個別元件的變更。

以下圖中的影像為例。 使用者可以使用操作工具移動、旋轉影像和調整其大小。 每個操作工具的變更會連同其餘操作工具一起受到解譯。

例如,如果您在影像上有兩個操作工具 (1 和 2),您以 +Y 方向 (向下) 移動操作工具 1,影像的變更會以操作工具 2 的變更為基礎進行。 如果操作工具 2 也向 +Y 方向 (向下) 移動,則影像只會往 +Y 方向移動。 但是如果操作工具 2 沒有變更,或者向 -Y 方向 (向上) 移動,則影像會變小或旋轉。

兩隻指頭正在操作的虛擬相片。

由兩個操作工具操作的影像

操作處理提供了架構來監視操作工具的子集,並且將這些操作工具當成相依運作 (非單獨運作) 的操作工具來解譯。 您可以同時建立數個操作處理器物件,每個物件各代表一個要在應用程式中操作的 UI 項目。 操作處理器會得知要觀察的輸入裝置,並且透過 .NET 事件 報告操作。

操作處理器並沒有關於要操作之特定項目的資訊。 應用程式會將變更另外套用至應用程式特有項目。 例如,應用程式會將轉換套用至影像,或是重繪影像以用新的位置、大小或方向來顯示影像。

操作是針對二維 (2-D) 仿射轉換 所設計。 這些轉換包括平移、旋轉和縮放。

操作的部分

操作是 Manipulator2D 物件的集合。 這個彙總操作是以原點和橢圓形表示。 原點是操作某個項目之所有操作工具的平均位置。 橢圓形的半徑是從原點到每個 Manipulator2D 物件的平均距離。

操作的各部分。

由兩個操作工具 (1 和 2)、原點和橢圓形指定操作

加入、移動或移除 UI 項目的操作工具時,應用程式會呼叫 ProcessManipulators() 方法來更新 ManipulationProcessor2D 物件。 第一次開始操作時,會引發 Started 事件。

注意事項注意事項

操作處理在用於畫面格型更新環境中時更有效率。在 Microsoft XNA 應用程式中使用操作處理時,不需顧慮這個部分,因為 XNA 架構的 Game.Update 方法提供的正是畫面格型更新。在其他環境 (例如 WinForms) 中,您可能需要提供自己的畫面格型邏輯,以收集操作並且定期以批次方式將它們傳送給 ProcessManipulators() 方法。

操作工具的數量或位置變更時,會引發 Delta 事件。 傳遞給 Delta 事件處理常式的 Manipulation2DDeltaEventArgs 物件有數個屬性會指定自上次事件之後發生的原點、縮放、旋轉和平移變更。 當操作工具移動,還有加入或移除操作工具時,操作的原點會變更。 平移值指定操作所包含的 X 或 Y 移動量。

應用程式會使用新的值重繪 UI 項目。

接觸點 A 移動到右邊後的操作。

操作工具 1 移動後造成原點變更

ManipulationProcessor2D 物件中移除最後一個與操作相關聯的操作工具時,會引發 Completed 事件。

操作處理模型

操作處理器使用直接使用模型。 在這個簡單的模型中,應用程式必須將所有輸入事件詳細資料傳遞給操作處理器。 輸入事件可以由任何輸入基本型別 (例如滑鼠裝置、手寫筆或手指) 引發。 這個程序提供直接篩選機制和簡單的使用模型,讓應用程式可以視需要批次處理輸入事件。

對於要將輸入基本型別納入操作處理的應用程式,它會根據輸入基本型別的詳細資料建立 Manipulator2D 結構,並且使用 ProcessManipulators() 方法將結構傳遞給至操作處理器。 然後操作處理器會引發事件,應用程式必須處理該事件以便用適當的方式更新視覺元件。

操作直接使用方式模型的流程。

操作處理模型

慣性

慣性處理器讓應用程式可以藉由模擬真實世界中的行為,對 UI 項目的位置、方向和其他屬性進行外插補動作。

例如,當使用者輕拂項目時,它會繼續移動、減速,然後慢慢停止。 慣性處理器實作這個行為的方式,是讓仿射 2-D 值 (原點、縮放、平移和旋轉) 在指定時間內以指定的減速率變更。

和操作處理器一樣,慣性處理器並沒有關於任何特定 UI 項目的資訊。 為了回應在 InertiaProcessor2D 物件上引發的事件,應用程式會將變更另外套用至應用程式特有項目。

慣性處理和操作處理通常會一起使用。 它們的介面類似,而且所引發的事件 (在某些情節中) 也相同。 一般來說,慣性處理會在 UI 項目的操作完成時開始。 這是透過接聽 Completed 事件,然後從該事件處理常式啟動慣性處理來完成。

請參閱

參考

System.Windows.Input.Manipulations