Drehung Single-Finger
In diesem Abschnitt wird erläutert, wie Ein Objekt mithilfe eines Pivotpunkts gedreht wird.
Die folgende Abbildung zeigt die Drehung mit einem Finger.
In Beispiel A wird das Objekt mithilfe der Drehbewegung um den Mittelpunkt des Objekts gedreht. In Beispiel B wird das Objekt gedreht, indem ein Finger um den Rand des Objekts bewegt wird. Der Manipulationsprozessor ermöglicht diese Drehung mithilfe von Pivotpunkt- und Pivotradiuswerten. Die folgende Abbildung zeigt die Komponenten der Drehung mit einem Finger.
Nachdem Sie die PivotPointX-, PivotPointY-und PivotRadius--Werte festgelegt haben, werden nachfolgende Übersetzungsmeldungen Drehung enthalten. Je größer der Pivotradius ist, desto größer die Änderung in x und y muss 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, gilt diese Berechnung für jedes Objektdelta. Wenn das Objekt skaliert wird, wächst der Pivotradius. Dieser Wert und die mittleren x- und y-Werte des Objekts werden an den Bearbeitungsprozessor übergeben, um das Objekt um den Pivotpunkt zu drehen.
Anmerkung
Der PivotRadius- Wert sollte niemals zwischen 0,0 und 1,0 stehen.
Verwandte Themen