2012-01-13 12 views
13

Về cơ bản, tôi có một ứng dụng phù thủy là 8000px x 8.000px. Chúng tôi có thể phóng to để xem một phần cụ thể, ví dụ trên đài hoặc chúng tôi có thể thu nhỏ để xem mọi thứ.Ứng dụng, cải thiện hiệu suất của các sự kiện chạm

Mỗi phần của ô tô là một điều khiển mà chúng ta có thể thao tác bằng ngón tay, trên màn hình cảm ứng kép hoặc màn hình cảm ứng đa điểm.

Vấn đề của tôi là: để điều khiển điều khiển, ví dụ như nút Âm lượng, người dùng cần di chuyển chuột chính xác như trong cuộc sống thực, do đó, với chuyển động tròn. Với chuột tất cả mọi thứ là hoàn hảo, nó phản ứng ngay lập tức mà không có bất kỳ sự chậm trễ. Tôi sử dụng OnMouseLeftButtonDown, OnMouseMove, vv Khi chạm vào, có vẻ như rất khó để máy tính có được vị trí cảm ứng và có độ trễ lớn, đặc biệt khi người dùng di chuyển 2 nút khác nhau bằng 2 ngón tay cùng một lúc . Tôi sử dụng OnTouchDown, OnTouchMove, vv ...

Sự khác biệt duy nhất giữa chuột và các liên lạc là khi chúng ta cần phải nhận được vị trí, với Chuột tôi sử dụng: (e là một MouseButtonEventArgs)

Point currentPosition = e.GetPosition(this); 

với Touch tôi sử dụng: (e là một TouchEventArgs)

Point currentPosition = e.GetTouchPoint(this).Position; 

Mọi thứ sau này là như nhau.

Tôi không biết nếu đó là do tôi có quá nhiều kiểm soát trong ứng dụng của mình (trên 5000 mà chúng tôi có thể thao tác, nhưng khi chúng tôi phóng to chỉ 2 điều khiển thì điều tương tự) hoặc vì nó thực sự khó khăn máy tính để nhận vị trí từ sự kiện chạm ....

Ai đó có thể giúp tôi với điều này không? Tôi cần phải tìm một giải pháp để loại bỏ độ trễ.

tôi sử dụng Visual Studio 2010, Blend 4, .NET 4.0 Windows 7 64-bit 7 Gb RAM Xeon 2.13 Ghz, 2 lõi, 8 chủ đề màn hình: công nghệ ELO, trong một màn hình NEC 2490WUXi2

+11

Nếu mọi thứ đều hoạt động tốt với chuột và bạn không có bất kỳ sự chậm trễ thao tác điều khiển, sau đó tôi sẽ nói thủ phạm là thiết bị điều khiển cảm ứng. Tôi nghĩ rằng nó không thể theo kịp với tốc độ ngón tay và do đó giới thiệu tụt hậu bạn đang nhận thấy.Tôi đã thấy vấn đề này trong phần cứng cảm ứng và tôi đã sử dụng phần cứng cảm ứng khác với khả năng phản hồi hoàn hảo, vì vậy tôi sẽ tự tin nói rằng vấn đề không liên quan gì đến WPF hoặc chính nó. thiết bị. – Murven

+1

Tôi khuyên bạn nên thử và sử dụng Microsoft Touch Simulator đi kèm với Microsoft Surface SDK. Nó hoạt động với chuột tất nhiên, như Murven đã đề cập, nếu không có sự chậm trễ trong việc tiếp nhận và phản hồi các sự kiện cảm ứng bằng cách sử dụng trình mô phỏng, thì độ trễ bắt nguồn từ các trình điều khiển cảm ứng đa điểm – Khaliloz

+0

Tần số của sự kiện OnTouchMove so với OnMouseMove? Nói cách khác, OnTouchMove được kích hoạt 1.000 lần mỗi giây, trong khi OnMouseMove có thể 10 lần mỗi giây? – Snixtor

Trả lời

3
+0

Cảm ơn bạn đã chia sẻ điều đó! – mlemay

+1

https://connect.microsoft.com/VisualStudio/feedback/details/782456/wpf-touch-event-fires-with-delay Xin lỗi về lỗi này! – Andreas

1

thật khó để nói lý do tại sao bạn có vấn đề như vậy - có thể OnTouchMove được kích hoạt thường xuyên hơn MouseMove và bạn nên tạo một số xử lý bổ sung để làm mịn dữ liệu vị trí cảm ứng. Tôi sẽ cố gắng để bình luận tất cả các mã theo Point currentPosition = e.GetTouchPoint (this) .Position;

và xem hiệu suất.

Một cách tiếp cận khác là tính số lượng OnTouchMove được kích hoạt.

1

Sự cố là thiết bị cảm ứng, hãy thử một thiết bị khác để xem liệu độ trễ có còn không.

+0

tại sao bạn không để Murven nhận được câu trả lời được chấp nhận. đây là những gì ông đã nói trong một bình luận. –

+0

anh ấy không viết câu trả lời, tôi không thể – mlemay