Single-Finger旋轉
本節說明如何使用樞紐點旋轉物件。
下圖說明單指旋轉。
在範例 A 中,物件會使用旋轉手勢繞著物件的中心點旋轉。 在範例 B 中,物件會藉由移動單指繞物件邊緣來旋轉。 操作處理器會使用樞紐點和樞紐半徑值來啟用此旋轉。 下圖說明單指旋轉的元件。
設定 PivotPointX、 PivotPointY和 PivotRadius 值之後,後續的翻譯訊息將會納入旋轉。 樞紐半徑愈大,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 之間。
相關主題