IntroductionEven though Microsoft has started to ignore WPF, the popul dịch - IntroductionEven though Microsoft has started to ignore WPF, the popul Việt làm thế nào để nói

IntroductionEven though Microsoft h

Introduction
Even though Microsoft has started to ignore WPF, the popularity of WPF for creating Windows applications is unbroken. This is natural, if we consider that the framework itself still has a lot of advantages and offers a lot of benefits. Additionally WPF gives us a rich coding model, which is still unmatched.

However, one of the disadvantages with WPF is the dependency on the underlying framework. This is nothing new, since every technology has this kind of disadvantage. If we are programming web applications, then we would also depend on the browser vendors. If we would program a micro-controller, we would also depend on the manufacturer.

In this article I will try to discuss the possibilities and problems that one will face when using multi-touch with WPF. The article itself will also try to illustrate various solutions. It should be said that the problem as stated in this article might actually be no problem for you or your project, however, for me personally it has been quite a troublemaker.

Background
About a year ago I finished my first touch focused application with WPF called Sumerics. The application had a nice looking UI and worked smoothly. However, when used multi-touch to pan or zoom the charts, I encountered a strange behavior. Basically the panning or zooming worked fine in the beginning, but then got more and more delayed. I thought that the chart control I was using (the amazing Oxyplot library) had a bug, but I was not able to find it. From my perspective the code looked ok and in some situations already optimized.

For a while I could just ignore this weird behavior, but in my latest project Quantum Striker I encountered this behavior again. I've been responsible for a game engine, audio and video, as well as a proper story line. The controller integration is a part of this game engine, hence touch has been integrated over WPF. What I experienced is that using the so-called strikers, which basically just represent two (permanent) touch points, will lead to a delay in the touch execution. This delay is practically zero at the beginning, but increases with the duration of the touch interaction.

Hunting down this annoying bug I was able to find out, that it is actually WPF, which is not working properly. I created a small demonstration program that is able to showcase this behavior. If we use the application with just one finger we will not be able to notice any strong delays. Using the same application with more fingers, we will see that the delay gets stronger with the duration of the touch interaction. Additionally the number of fingers, i.e. the number of touch interactions, will have an impact on the slope of this curve.

Approaching multi-touch
WPF offers a variety of possibilities to hook on to the events of touch devices. All of those possibilities are event based. There is no option to get access to a push based API.

In general we are able to access the following events:

Touch*, like TouchDown or TouchUp
Stylus*, like StylusDown or StylusUp
Manipulation*, like ManipulationStarted or ManipulationCompleted
As with some WPF events (in fact all routed events) we also have access to preview events, i.e. events that are triggered in the capture phase (and not in the bubbling phase). This capture phase is sometimes also called tunneling phase, since the event just tunnels through most elements, until one element, called the origin, is captured.

Here we got the following Preview* events:

PreviewTouch*, like PreviewTouchDown or PreviewTouchUp
PreviewStylus*, like PreviewStylusDown or PreviewStylusUp
When we touch the screen, WPF generates receives messages and generates these events. Since touch events are all routed the Preview* event is fired on the root of the visual tree, going down the visual tree until the source element that the touch event occurred is met.

Once this source element is reached, the event is fired and starts bubbling from the source element. This bubbling proceeds up the visual tree to the root. The event propagation could be stopped by setting e.IsHandled = true.

On the other hand, if the touch event propagation reaches all the way up to the root, then the touch event is promoted to a mouse event in order to guarantee backwards compatibility. At this point, PreviewMouseDown is fired for the tunneling phase. Finally the MouseDown event is fired in the bubbling phase.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Giới thiệuNgay cả khi Microsoft đã bắt đầu để bỏ qua WPF, sự phổ biến của WPF để tạo ứng dụng Windows là không gián đoạn. Điều này là tự nhiên, nếu chúng ta xem xét rằng khuôn khổ chính nó vẫn còn có rất nhiều lợi thế và cung cấp rất nhiều lợi ích. Ngoài ra WPF cho chúng ta một mô hình mã hóa phong phú, đó là vẫn chưa từng có.Tuy nhiên, một trong những khó khăn với WPF là phụ thuộc vào khuôn khổ tiềm ẩn. Điều này là không có gì mới, kể từ khi mỗi công nghệ có loại bất lợi. Nếu chúng tôi lập trình ứng dụng web, sau đó chúng tôi cũng sẽ phụ thuộc vào các nhà cung cấp trình duyệt. Nếu chúng tôi nào chương trình một bộ điều khiển vi, chúng tôi cũng sẽ phụ thuộc vào các nhà sản xuất.Trong bài viết này tôi sẽ cố gắng để thảo luận về các khả năng và các vấn đề đó sẽ phải đối mặt khi sử dụng đa cảm ứng với WPF. Các bài báo đó cũng sẽ cố gắng để minh họa cho giải pháp khác nhau. Nó cần phải nói rằng vấn đề như đã nêu trong bài viết này có thể thực sự là không có vấn đề cho bạn hoặc dự án của bạn, Tuy nhiên, đối với tôi cá nhân nó đã là khá một chà.NềnKhoảng một năm trước, tôi đã hoàn thành của tôi liên lạc đầu tiên tập trung vào ứng dụng với WPF được gọi là Sumerics. Ứng dụng này có một giao diện người dùng đang tìm kiếm tốt đẹp và làm việc trơn tru. Tuy nhiên, khi sử dụng đa cảm ứng để xoay hoặc phóng to các bảng xếp hạng, tôi gặp phải một hành vi lạ. Về cơ bản các panning hoặc phóng to làm việc tốt trong đầu, nhưng sau đó nhận được nhiều hơn và chậm hơn. Tôi nghĩ rằng biểu đồ kiểm soát tôi đã sử dụng (thư viện Oxyplot tuyệt vời) có một lỗi, nhưng tôi đã không thể tìm thấy nó. Từ quan điểm của tôi mã trông ok và trong một số trường hợp đã được tối ưu.Trong một thời gian tôi có thể chỉ cần bỏ qua hành vi lạ này, nhưng trong các dự án mới nhất của tôi tiền đạo lượng tử tôi đụng độ hành vi này một lần nữa. Tôi đã được chịu trách nhiệm cho một công cụ trò chơi, âm thanh và video, cũng như một dòng câu chuyện thích hợp. Tích hợp điều khiển là một phần của công cụ trò chơi này, do đó liên lạc đã được tích hợp trong WPF. Những gì tôi có kinh nghiệm là sử dụng tiền đạo cái gọi là, mà về cơ bản chỉ đại diện cho hai điểm chạm (thường trú), sẽ dẫn đến một sự chậm trễ trong việc thiết lập liên lạc. Sự trì hoãn này là thực tế zero lúc đầu, nhưng tăng với thời gian của sự tương tác liên lạc.Săn lùng lỗi gây phiền nhiễu này tôi đã có thể tìm hiểu, đó là thực sự WPF, đó không làm việc đúng cách. Tôi tạo ra một chương trình cuộc biểu tình nhỏ mà có thể giới thiệu hành vi này. Nếu chúng tôi sử dụng các ứng dụng với chỉ một ngón tay chúng tôi sẽ không thể nhận thấy bất kỳ sự chậm trễ mạnh mẽ. Sử dụng các ứng dụng cùng với thêm ngón tay, chúng ta sẽ thấy rằng sự chậm trễ được mạnh mẽ hơn với thời gian của sự tương tác liên lạc. Ngoài ra, số lượng các ngón tay, tức là số lượng cảm ứng tương tác, sẽ có một tác động trên độ dốc của đường cong này.Tiếp cận đa cảm ứngWPF cung cấp một loạt các khả năng để treo trên các sự kiện của thiết bị cảm ứng. Tất cả những khả năng là sự kiện dựa. Có là không có tùy chọn để có được quyền truy cập vào một API đẩy dựa.Nói chung, chúng tôi có thể truy cập vào các sự kiện sau đây:Liên lạc *, như TouchDown hoặc TouchUpBút stylus *, như StylusDown hoặc StylusUpThao tác *, như ManipulationStarted hoặc ManipulationCompletedNhư với WPF một số sự kiện (trong thực tế tất cả chuyển sự kiện) chúng tôi cũng đã truy cập để xem trước các sự kiện, tức là các sự kiện được kích hoạt trong giai đoạn quay (và không phải ở giai đoạn bubbling). Giai đoạn chụp này đôi khi cũng được gọi là bắt đường hầm giai đoạn, kể từ khi sự kiện này chỉ tham quan thông qua hầu hết các thành phần, cho đến khi một trong những yếu tố, được gọi là nguồn gốc, bị bắt.Ở đây chúng tôi đã nhận sau đây xem trước * sự kiện:PreviewTouch *, như PreviewTouchDown hoặc PreviewTouchUpPreviewStylus *, như PreviewStylusDown hoặc PreviewStylusUpKhi chúng tôi chạm vào màn hình, WPF tạo ra nhận được thư và tạo ra những sự kiện này. Kể từ khi sự kiện liên lạc được tất cả chuyển xem trước * sự kiện bắn vào gốc rễ của cây hình ảnh, đi xuống cây hình ảnh cho đến khi các yếu tố nguồn xảy ra các sự kiện liên lạc được đáp ứng.Một khi nguồn nguyên tố này được đạt tới, sự kiện này là bắn và bắt đầu bubbling từ các yếu tố mã nguồn. Này bubbling tiền lên cây hình ảnh vào thư mục gốc. Tuyên truyền sự kiện có thể được ngừng lại bằng cách đặt e.IsHandled = true.Mặt khác, nếu liên lạc sự kiện truyền đạt đến gốc, sau đó sự kiện liên lạc đang xúc tiến đến một sự kiện chuột để đảm bảo khả năng tương thích ngược. Tại thời điểm này, PreviewMouseDown là bắn cho giai đoạn đường hầm. Cuối cùng sự kiện MouseDown bắn trong giai đoạn bubbling.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Giới thiệu
Mặc dù Microsoft đã bắt đầu bỏ qua WPF, sự phổ biến của WPF để tạo ra các ứng dụng Windows là không gián đoạn. Điều này là tự nhiên, nếu chúng ta xem xét rằng các khuôn khổ chính nó vẫn còn có rất nhiều lợi thế và cung cấp rất nhiều lợi ích. Ngoài ra WPF cung cấp cho chúng ta một mô hình mã hóa phong phú, trong đó vẫn còn chưa từng có. Tuy nhiên, một trong những nhược điểm với WPF là sự phụ thuộc vào khung bên dưới. Điều này không có gì mới, vì mỗi công nghệ có loại này bất lợi. Nếu chúng ta đang lập trình các ứng dụng web, sau đó chúng tôi cũng sẽ phụ thuộc vào các nhà cung cấp trình duyệt. Nếu chúng tôi một chương trình vi điều khiển, chúng tôi cũng sẽ phụ thuộc vào nhà sản xuất. Trong bài viết này tôi sẽ cố gắng để thảo luận về các khả năng và các vấn đề mà người ta sẽ phải đối mặt khi sử dụng cảm ứng đa điểm với WPF. Các bài báo đó cũng sẽ cố gắng để minh họa các giải pháp khác nhau. Nó cần phải nói rằng các vấn đề như đã nêu trong bài viết này thực sự có thể không có vấn đề cho bạn, dự án của bạn, tuy nhiên, đối với cá nhân tôi nó đã được khá rắc rối. Background Khoảng một năm trước, tôi đã hoàn thành cảm ứng đầu tiên của tôi tập trung ứng dụng với WPF gọi Sumerics. Các ứng dụng có một cái nhìn giao diện đẹp và làm việc trơn tru. Tuy nhiên, khi sử dụng cảm ứng đa điểm để quay hoặc phóng to các bảng xếp hạng, tôi gặp phải một hành vi kỳ lạ. Về cơ bản panning hay phóng to làm việc tốt trong đầu, nhưng sau đó đã bị trì hoãn nhiều và nhiều hơn nữa. Tôi nghĩ rằng việc kiểm soát biểu đồ tôi đang sử dụng (các thư viện Oxyplot tuyệt vời) đã có một lỗi, nhưng tôi đã không thể tìm thấy nó. Từ quan điểm của tôi các mã nhìn ok và trong một số trường hợp đã được tối ưu hóa. Đối với một trong khi tôi chỉ có thể bỏ qua hành vi này lạ, nhưng trong dự án mới nhất của tôi Quantum Striker tôi gặp phải hành vi này một lần nữa. Tôi đã được chịu trách nhiệm cho một công cụ trò chơi, âm ​​thanh và video, cũng như một dòng câu chuyện thích hợp. Việc tích hợp bộ điều khiển là một phần của trò chơi động cơ này, do đó chạm đã được tích hợp trên WPF. Những gì tôi có kinh nghiệm là sử dụng cái gọi là tiền đạo, mà về cơ bản chỉ là đại diện cho hai điểm (vĩnh viễn) liên lạc, sẽ dẫn đến sự chậm trễ trong việc thực hiện liên lạc. Sự chậm trễ này là thực tế không ở đầu, nhưng tăng với thời gian của sự tương tác cảm ứng. Săn bắn xuống lỗi này gây phiền nhiễu tôi đã có thể tìm ra, mà nó thực sự là WPF, mà không làm việc đúng cách. Tôi tạo ra một chương trình trình diễn nhỏ đó là có thể giới thiệu các hành vi này. Nếu chúng ta sử dụng các ứng dụng chỉ với một ngón tay, chúng tôi sẽ không thể nhận thấy bất kỳ sự chậm trễ mạnh. Sử dụng cùng một ứng dụng với nhiều ngón tay, chúng ta sẽ thấy rằng sự chậm trễ được mạnh mẽ hơn với thời gian của sự tương tác cảm ứng. Ngoài ra số lượng các ngón tay, tức là số lượng tương tác cảm ứng, sẽ có tác động vào độ dốc của đường cong này. Tiếp cận đa chạm WPF cung cấp một loạt các khả năng để móc vào các sự kiện của các thiết bị cảm ứng. Tất cả những khả năng là sự kiện dựa. Không có tùy chọn để có được quyền truy cập vào một push dựa API. Nói chung chúng ta có thể truy cập vào các sự kiện sau đây: Touch, như Touchdown hoặc TouchUp Stylus *, như StylusDown hoặc StylusUp Manipulation *, như ManipulationStarted hoặc ManipulationCompleted Như với một số sự kiện WPF (trên thực tế tất cả các sự kiện định tuyến), chúng tôi cũng có quyền truy cập đến các sự kiện xem trước, tức là sự kiện được kích hoạt trong giai đoạn chụp (và không phải trong giai đoạn sủi bọt). . Giai đoạn chụp này đôi khi còn được gọi là giai đoạn đường hầm, kể từ sự kiện này chỉ là đường hầm thông qua hầu hết các yếu tố, cho đến khi một phần tử, gọi là nguồn gốc, là bị bắt Ở đây chúng tôi đã nhận Preview * Các sự kiện sau đây: PreviewTouch *, như PreviewTouchDown hoặc PreviewTouchUp PreviewStylus *, giống như PreviewStylusDown hoặc PreviewStylusUp Khi chúng ta chạm vào màn hình, WPF tạo nhận được tin nhắn và tạo ra những sự kiện này. Kể từ sự kiện cảm ứng được tất cả các định tuyến các sự kiện Preview * là bắn vào thư mục gốc của cây thị giác, đi xuống cây thị giác cho đến khi các yếu tố nguồn mà các sự kiện liên lạc xảy ra được đáp ứng. Khi yếu tố nguồn này được đạt tới, sự kiện này là bắn và bắt đầu sủi bọt từ các yếu tố nguồn. Bong bóng này tiến lên cây hình ảnh vào thư mục gốc. Các sự kiện lan truyền có thể được ngừng lại bằng cách thiết lập e.IsHandled = true. Mặt khác, nếu các sự kiện lan truyền liên lạc tới tất cả các con đường lên đến gốc, sau đó các sự kiện liên lạc được thăng chức một sự kiện chuột để đảm bảo tính tương thích ngược. Tại thời điểm này, PreviewMouseDown là bắn cho giai đoạn đường hầm. Cuối cùng các sự kiện MouseDown là bắn trong giai đoạn bong bóng.






























đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: