Single-Finger Rotation

In diesem Abschnitt wird erläutert, wie Sie ein Objekt mithilfe eines Pivotpunkts drehen.

Die folgende Abbildung veranschaulicht die Drehung mit einem Finger.

Abbildung, die zwei Arten der Drehung mit einem Finger zeigt: um die Mitte oder um den Rand

In Beispiel A wird das -Objekt mithilfe der Drehbewegung um den Mittelpunkt des Objekts gedreht. In Beispiel B wird das Objekt gedreht, indem ein einzelner Finger um den Rand des Objekts bewegt wird. Der Manipulationsprozessor ermöglicht diese Drehung mithilfe von Pivotpunkt- und Pivotradiuswerten. Die folgende Abbildung veranschaulicht die Komponenten der Drehung mit einem Finger.

Abbildung der Komponenten der Drehung mit einem Finger: pivotpointx, pivotpointy und pivotradius

Nachdem Sie die Werte PivotPointX, PivotPointYund PivotRadius festgelegt haben, enthalten nachfolgende Übersetzungsmeldungen die Drehung. Je größer der Pivotradius, desto größer muss die Änderung in x und y sein, um das Objekt zu drehen. Der folgende Code zeigt, wie diese Werte im Bearbeitungsprozessor festgelegt werden können.

HRESULT STDMETHODCALLTYPE CManipulationEventSink::ManipulationDelta( 
    /* [in] */ FLOAT x,
    /* [in] */ FLOAT y)
{
    m_cStartedEventCount ++;

    // Set the pivot point to the object's center and then set the radius 
    // to the distance from the center to the edge of the object.
    m_pManip->put_PivotPointX(m_objectRef->xPos);
    m_pManip->put_PivotPointY(m_objectRef->yPos);
    
    float fPivotRadius = (FLOAT)(sqrt(pow(m_dObj->get_Width()/2, 2) + pow(m_dObj->get_Height()/2, 2)))*0.4f;
    
    m_pManip->put_PivotRadius(fPivotRadius);
  

    return S_OK;
}    
     

Im vorherigen Beispiel wird der Abstand zum Rand des Objekts (auf 40 Prozent skaliert) als Pivotradius verwendet. Da die Objektgröße berücksichtigt wird, ist diese Berechnung für jedes Objektdelta gültig. Wenn das Objekt skaliert wird, wächst der Pivotradius. Dieser Wert und die x- und y-Werte in der Mitte des Objekts werden an den Bearbeitungsprozessor übergeben, um das Objekt um den Pivotpunkt zu drehen.

Hinweis

Der PivotRadius-Wert sollte nie zwischen 0,0 und 1,0 liegen.

Manipulationen

PivotRadius

PivotPointX

PivotPointY