Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta sección se explica cómo girar un objeto mediante un punto dinámico.
En la imagen siguiente se muestra la rotación de un solo dedo.
En el ejemplo A, el objeto se gira alrededor del punto central del objeto mediante el gesto de rotación. En el ejemplo B, el objeto se gira moviendo un solo dedo alrededor del borde del objeto. El procesador de manipulación habilita esta rotación mediante el uso de valores de punto de pivote y radio de dinamización. En la imagen siguiente se muestran los componentes de la rotación de un solo dedo.
Después de establecer los valores de PivotPointX, PivotPointYy valores de PivotRadius, los mensajes de traducción posteriores incorporarán rotación. Cuanto mayor sea el radio de pivote, mayor será el cambio en x e y para girar el objeto. En el código siguiente se muestra cómo se podrían establecer estos valores en el procesador de manipulación.
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;
}
En el ejemplo anterior, la distancia al borde del objeto (escalado al 40 por ciento) se usa como radio dinámico. Dado que se tiene en cuenta el tamaño del objeto, este cálculo es válido para cada delta de objeto. A medida que el objeto se escala, el radio dinámico crece. Este valor y los valores central x e y del objeto se pasan al procesador de manipulación para girar el objeto alrededor del punto dinámico.
Nota
El valor de PivotRadius nunca debe estar comprendido entre 0,0 y 1,0.
Temas relacionados