建立項目在XAML 程式中寫入下面代碼,為<Canvas>設定ManipulationStarting、ManipulationDelta、ManipulationCompleted 事件,并在其中添加三張圖檔,将Image 的IsManipulationEnabled 屬性均為"True",同時所有的Image 都添加了<MatrixTransform>對象,用于組合平移、縮放、旋轉操作。
當觸碰到Image 圖檔時,image_ManipulationStarting 事件将會自動觸發,首先需要定義ManipulationContainer(即為touchPad<Canvas>),該容器的主要用于定義參考坐标,圖檔的任何操作均以參考坐标為準。ManipulationModes 設定可以限制哪些手勢操作是程式允許的,如果沒有特殊情況可設定為"All"。
ManipulationDelta 事件會在手勢操作開始時觸發,并且該手勢需持續進行不得間斷。通過FrameworkElement 獲得接受操作的圖檔控件,将圖檔透明度降低到0.5,建立Matrix 用于控制圖檔MatrixTransform,利用Point 獲得圖檔中心坐标點,通過ScaleAt、RotateAt、Translate 執行縮放、旋轉、平移操作。
最後,當手指離開觸摸屏即操作結束,image_ManipulationCompleted 事件觸發,将圖檔透明度重新調整為1。
<a href="http://cid-c75f4e27adfe5bbc.office.live.com/self.aspx/GnieTech/WpfManipulation.zip" target="_blank">WpfManipulation.zip</a>
本文轉自Gnie部落格園部落格,原文連結:http://www.cnblogs.com/gnielee/archive/2010/08/18/multi-touch-manipulatioin.html,如需轉載請自行聯系原作者