Freigeben über


Single-Finger Drehung

In diesem Abschnitt wird erläutert, wie Ein Objekt mithilfe eines Pivotpunkts gedreht wird.

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 Bearbeitungsprozessor 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 für PivotPointX, PivotPointY und 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 (skaliert auf 40 Prozent) 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 zentrierten x- und y-Werte des Objekts werden an den Bearbeitungsprozessor übergeben, um das Objekt um den Pivotpunkt zu drehen.

Hinweis

Der PivotRadius-Wert darf nie zwischen 0,0 und 1,0 sein.

 

Manipulationen

PivotRadius

PivotPointX

PivotPointY