Condividi tramite


rotazione Single-Finger

Questa sezione illustra come ruotare un oggetto usando un punto pivot.

L'immagine seguente illustra la rotazione a dito singolo.

figura che mostra due tipi di rotazione a dito singolo: intorno al centro o intorno al bordo

Nell'esempio A, l'oggetto viene ruotato intorno al punto centrale dell'oggetto usando il movimento di rotazione. Nell'esempio B, l'oggetto viene ruotato spostando un dito singolo intorno al bordo dell'oggetto. Il processore di manipolazione consente questa rotazione usando i valori del raggio pivot e del punto pivot. L'immagine seguente illustra i componenti della rotazione a dito singolo.

figura che mostra i componenti della rotazione a dito singolo: pivotpointx, pivotpointy e pivotradius

Dopo aver impostato i valori PivotPointX, PivotPointY e PivotRadius, i messaggi di traduzione successivi incorporano la rotazione. Maggiore è il raggio pivot, maggiore deve essere la modifica in x e y per ruotare l'oggetto. Nel codice seguente viene illustrato come impostare questi valori nel processore di manipolazione.

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;
}    
     

Nell'esempio precedente la distanza al bordo dell'oggetto (ridimensionata al 40%) viene usata come raggio pivot. Poiché le dimensioni dell'oggetto vengono prese in considerazione, questo calcolo è valido per ogni delta dell'oggetto. Quando l'oggetto viene ridimensionato, il raggio pivot aumenta. Questo valore e i valori centro x e y dell'oggetto vengono passati al processore di manipolazione per ruotare l'oggetto intorno al punto pivot.

Nota

Il valore PivotRadius non deve mai essere compreso tra 0,0 e 1.0.

 

Modifiche

PivotRadius

PivotPointX

PivotPointY