我已經從codeplex中下載了允許手機接收手勢支持的Windows手機工具包。在我的應用程序中,我有一個橢圓。我想要創建一種方法,當屏幕接收到向上的垂直手勢時順時針旋轉橢圓形,當它收到向下的垂直手勢時,順時針旋轉&。我在谷歌上花了很多時間,但效果很差,我該如何實現這一操作?使用手勢旋轉垂直拖動的橢圓
回答
首先,將RotateTransform分配給要旋轉的控件。在這裏我使用了一個矩形,因爲它更容易看到它旋轉,但它的作品也很好用橢圓:
<Rectangle Fill="Blue" Height="50" Width="50">
<Rectangle.RenderTransform>
<RotateTransform x:Name="RotateTransform" />
</Rectangle.RenderTransform>
</Rectangle>
然後,訂閱ManipulationDelta
事件的頁面:
<phone:PhoneApplicationPage
x:Class="..."
various stuff
ManipulationDelta="PhoneApplicationPage_ManipulationDelta">
在事件處理程序中,使用e.DeltaManipulation.Translation
來知道手指在X軸和Y軸上的移動量。然後,相應地旋轉你的形狀:
private void PhoneApplicationPage_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
this.RotateTransform.Angle += e.DeltaManipulation.Translation.Y;
}
如果你希望你的形狀,以不同的速度旋轉,然後通過一個常數乘以e.DeltaManipulation.Translation.Y
(> 1,加速旋轉,< 1慢下來)。此外,如果您不希望形狀在手指沿對角線移動時旋轉,請檢查e.DeltaManipulation.Translation.X
的值,並僅在其小於e.DeltaManipulation.Translation.Y
的範圍內應用旋轉(您不能只檢查它是否等於0,因爲手指在做垂直手勢時總是會稍微向左或向右移動)。
當我向任一方向旋轉手指時,代碼工作正常,但是當我從橢圓開始向上/向下方向製作垂直手勢時,橢圓會旋轉90度然後停止,爲什麼會發生這種情況? –
@ Sidsec9確實。說實話,我不知道如何解釋這種行爲。你可以通過在橢圓上設置IsHitTestVisible =「False」來防止它,但這是一個骯髒的修復。 –
我想出了一個新的解決方案。我複製了橢圓並將其粘貼在舊的橢圓上。新的橢圓具有不透明度= 0,並且將您的代碼應用於新的橢圓以旋轉舊的橢圓。這工作正常! –
- 1. 用一根手指旋轉橢圓(WPF)
- 2. 拖動和旋轉手勢在iPad上
- 3. opengl:旋轉橢圓
- 4. 旋轉/車削橢圓組
- 5. 橢圓旋轉矩陣?
- 6. QML畫布旋轉橢圓
- 7. 如何攔截垂直滑動手勢
- 8. ScrollView - 手勢識別器 - 垂直滑動
- 9. 垂直旋轉ImageView
- 10. 垂直旋轉JTextField
- 11. 旋轉的橢圓軌道無
- 12. UIScrollView上的旋轉手勢
- 13. UIImageView的旋轉手勢
- 14. Java在KeyPress上旋轉橢圓
- 15. 如何在WPF中旋轉橢圓
- 16. 圍繞軸旋轉一個橢圓
- 17. Libgdx旋轉橢圓碰撞檢測
- 18. UITableView上的垂直手勢識別
- 19. Android中的垂直和水平手勢
- 20. Android的手勢識別 - 垂直線
- 21. IKImage手勢縮放旋轉
- 22. NSUndoManager使用旋轉手勢撤消UIImage旋轉
- 23. 拉斐爾JS橢圓不拖動
- 24. 溫泉旋轉木馬垂直滾動
- 25. 垂直圖像旋轉
- 26. AnythingSlider垂直旋轉木馬
- 27. 將橢圓的繪製點旋轉爲圓形
- 28. Qt使用horizontalSlider旋轉橢圓時出現QPainter錯誤
- 29. 「可拖動」只能垂直拖動?
- 30. 用觸摸手勢旋轉UIImageView - iphone dev
將RotateTransform應用到橢圓,通過使用頁面的ManipulationDelta事件檢測垂直手勢,並相應地更改RotateTransform的角度 –
我可以將RotateTransform寫入到Ellipse,但我無法想出邏輯以檢測垂直手勢,你能舉個例子嗎? –