2012-10-11 223 views
2

我的應用程序在各個地方使用UiElement.TouchDown事件,其中之一是讓用戶停止旋轉輪。在這種情況下,人們可以很容易地注意到實際觸摸屏幕和TouchDown事件之間的短暫延遲約爲1/3。TouchDown事件延遲

我已將Stylus.IsPressAndHoldEnabled設置爲false。

爲了解決此問題,我編寫了一個報告WPF事件和本機窗口消息的測試工具,並且我注意到只要觸摸屏幕,就會生成ID爲0x02CC,0x011B和0x011A的消息,在TouchDown事件之前大約100到300毫秒。這導致我相信司機會很快地報告觸摸事件,並且延遲會在稍後的WPF翻譯中引入。

有沒有辦法讓觸摸交互更具響應性?請詢問您需要的任何信息!

+0

驅動程序本身將數據發送速度非常快的窗口的事件,但Windows正在放緩的一切......你可以,如果你打開MSPAINT檢查延遲,並繪製快,你繪製的線是不是你的手指下,有一點滯後....我不認爲我們可以做這件事,因爲Windows ...也許我錯了 – mlemay

+0

這可能是連接,但我不認爲這是這種情況這裏。如果我在觸摸後立即擡起手指,TouchDown和TouchUp會比之前的單一TouchDown提升得更快更快。 – Jens

+1

我們的團隊正在談論ELO和3M程序員的這個延遲問題,這就是他們告訴我們的......這個修改速度很快,因爲窗口在up事件上沒有任何關係,在touchdown窗口檢查是否有一個手勢和everyting ...如果我們想要更快的東西,我們需要直接與司機談話,而不是通過Windows事件... – mlemay

回答

1

除非筆觸都在XAML或在後面的代碼手動設置需要設置:(我假設你的意思是說IsPressAndHoldEnabled不IsTouchAndHoldEnabled)

Stylus.IsPressAndHoldEnabled="False" Stylus.IsFlicksEnabled="False" 

而且考慮處理觸下事件並且還捕捉到相關的UIElement(不要忘了在TouchUp中發佈它)。

uielement.CaptureTouch(e.TouchDevice); 
e.Handled = true;