다음을 통해 공유


Single-Finger 회전

이 섹션에서는 피벗 지점을 사용하여 개체를 회전하는 방법을 설명합니다.

다음 이미지는 한 손가락 회전을 보여 줍니다.

가운데 또는 가장자리 주위의 두 가지 유형의 한 손가락 회전을 보여 주는 그림

예를 들어 A에서 개체는 회전 제스처를 사용하여 개체의 중심점을 중심으로 회전됩니다. 예제 B에서 개체는 개체의 가장자리 주위에 한 손가락을 이동하여 회전됩니다. 조작 프로세서는 피벗 지점 및 피벗 반경 값을 사용하여 이 회전을 사용하도록 설정합니다. 다음 이미지는 한 손가락 회전의 구성 요소를 보여 줍니다.

한 손가락 회전의 구성 요소를 보여 주는 그림: 피벗포인트, 피벗포인트 및 피벗 래디우스

PivotPointX, PivotPointYPivotRadius 값을 설정하면 후속 번역 메시지가 회전을 통합합니다. 피벗 반지름이 클수록 개체를 회전하려면 x와 y의 변경 내용이 커야 합니다. 다음 코드에서는 조작 프로세서에서 이러한 값을 설정하는 방법을 보여 있습니다.

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

이전 예제에서는 개체의 가장자리까지의 거리(40%로 크기 조정)가 피벗 반지름으로 사용됩니다. 개체 크기를 고려하므로 이 계산은 모든 개체 델타에 유효합니다. 개체의 크기가 조정되면 피벗 반경이 증가합니다. 이 값과 개체의 가운데 x 및 y 값은 조작 프로세서에 전달되어 피벗 지점 주위에서 개체를 회전합니다.

참고

PivotRadius 값은 0.0에서 1.0 사이가 되어서는 안 됩니다.

 

조작

PivotRadius

PivotPointX

PivotPointy