資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

UIElement.ManipulationDelta 事件

輸入裝置在操作期間變更位置時發生。

命名空間:  System.Windows
組件:  PresentationCore (在 PresentationCore.dll 中)
針對 XAML 的 XMLNS: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

public event EventHandler<ManipulationDeltaEventArgs> ManipulationDelta
<object ManipulationDelta="EventHandler<ManipulationDeltaEventArgs>" .../>

當使用者在處理期間以手指拖曳螢幕多次時,就會發生 ManipulationDelta 事件,而當發生慣性時,就會再次發生該事件。 您可以使用 IsInertial 屬性來檢查慣性期間是否發生該事件。

發生事件時,發生 ManipulationDelta 事件的項目布受影響。 您必須提供邏輯給要操作的項目。 CumulativeManipulation DeltaManipulation 屬性的型別均為 ManipulationDelta,其中包含操作位置變更及解讀為移動、調整大小或旋轉物件的相關資料。 您可以將該資訊套用至要處理的項目。

如需操作的詳細資訊,請參閱輸入概觀 如需會回應操作之應用程式的範例,請參閱 逐步解說:建立您的第一個觸控應用程式

下列範例會示範 ManipulationDelta 事件的事件處理常式。 本範例使用 DeltaManipulation 屬性移動、調整大小及旋轉 Rectangle 範例也會檢查是否在慣性期間發生 ManipulationDelta 事件,以及矩形是否接觸視窗邊緣。 如果這些情況都成立,應用程式會停止操作,防止矩形離開應用程式的可見區域。 這個範例是逐步解說:建立您的第一個觸控應用程式中完整範例的一部分。


void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{

    // Get the Rectangle and its RenderTransform matrix.
    Rectangle rectToMove = e.OriginalSource as Rectangle;
    Matrix rectsMatrix = ((MatrixTransform)rectToMove.RenderTransform).Matrix;

    // Rotate the Rectangle.
    rectsMatrix.RotateAt(e.DeltaManipulation.Rotation, 
                         e.ManipulationOrigin.X, 
                         e.ManipulationOrigin.Y);

    // Resize the Rectangle.  Keep it square 
    // so use only the X value of Scale.
    rectsMatrix.ScaleAt(e.DeltaManipulation.Scale.X, 
                        e.DeltaManipulation.Scale.X, 
                        e.ManipulationOrigin.X,
                        e.ManipulationOrigin.Y);

    // Move the Rectangle.
    rectsMatrix.Translate(e.DeltaManipulation.Translation.X,
                          e.DeltaManipulation.Translation.Y);

    // Apply the changes to the Rectangle.
    rectToMove.RenderTransform = new MatrixTransform(rectsMatrix);

    Rect containingRect =
        new Rect(((FrameworkElement)e.ManipulationContainer).RenderSize);

    Rect shapeBounds =
        rectToMove.RenderTransform.TransformBounds(
            new Rect(rectToMove.RenderSize));

    // Check if the rectangle is completely in the window.
    // If it is not and intertia is occuring, stop the manipulation.
    if (e.IsInertial && !containingRect.Contains(shapeBounds))
    {
        e.Complete();
    }


    e.Handled = true;
}


.NET Framework

支援版本:4

.NET Framework Client Profile

支援版本:4

Windows 7, Windows Vista SP1 (含) 以後版本, Windows XP SP3, Windows Server 2008 (不支援伺服器核心), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心), Windows Server 2003 SP2

.NET Framework 並不支援各種平台的所有版本。如需支援的版本的清單,請參閱.NET Framework 系統需求

社群新增項目

顯示:
© 2014 Microsoft