Bagikan melalui


Rotasi Single-Finger

Bagian ini menjelaskan cara memutar objek menggunakan titik pivot.

Gambar berikut mengilustrasikan rotasi satu jari.

ilustrasi memperlihatkan dua jenis rotasi satu jari: di sekitar tengah atau di sekitar tepi

Dalam contoh A, objek diputar di sekitar titik tengah objek dengan menggunakan gerakan rotasi. Dalam contoh B, objek diputar dengan memindahkan satu jari di sekitar tepi objek. Prosesor manipulasi memungkinkan rotasi ini dengan menggunakan nilai pivot point dan pivot radius. Gambar berikut mengilustrasikan komponen rotasi satu jari.

ilustrasi memperlihatkan komponen rotasi satu jari: pivotpointx, pivotpointy, dan pivotradius

Setelah Anda mengatur nilai PivotPointX, PivotPointY, dan PivotRadius , pesan terjemahan berikutnya akan menggabungkan rotasi. Semakin besar radius pivot, semakin besar perubahan x dan y harus memutar objek. Kode berikut menunjukkan bagaimana nilai-nilai ini dapat diatur dalam prosesor manipulasi.

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

Dalam contoh sebelumnya, jarak ke tepi objek (diskalakan hingga 40 persen) digunakan sebagai radius pivot. Karena ukuran objek dipertimbangkan, perhitungan ini valid untuk setiap delta objek. Saat objek diskalakan, radius pivot tumbuh. Nilai ini dan nilai tengah x dan y objek diteruskan ke prosesor manipulasi untuk memutar objek di sekitar titik pivot.

Catatan

Nilai PivotRadius tidak boleh antara 0,0 dan 1,0.

 

Manipulasi

PivotRadius

PivotPointX

PivotPointY