开发者

WPF 4 touch events getting the center of a pinch gesture

开发者 https://www.devze.com 2022-12-17 11:20 出处:网络
I am using the .net 4 beta 2 touch libraries, and Im trying to implement a zooming feature in my WPF application.

I am using the .net 4 beta 2 touch libraries, and Im trying to implement a zooming feature in my WPF application.

I can get the zooming working just fine, but what I want is to zoom in on the center of the pinch gesture, and I cannot see anything in the API's about how to accomplish this.

Is there some methods or 开发者_如何学运维properties that expose the 2 contacts being using in the pinch gesture so that I can get the center of them?

EDIT:

I just investigated using the GetIntermediateTouchPoints method of TouchEventArgs which did not seem to give me what I want.

Thanks a lot Mark


Assuming you are using the new TouchXxxxEvent routed events, they all take TouchEventArgs, which has TouchDevice property. If you call its GetTouchPoint() method, you can get the TouchPoint that represents the point of touch.

More details and sample code from Jaime Rodriguez.


Turns out that the properties I was after was right in front of me all along.

the Manipulation2DDeltaEventArgs class has OriginX and OriginX properties that specific the center point of the pinch gesture, so Im just using that and its all good :)


This answer is for .Net 4 release version.

In the case of using ManipulationDelta event the ManipulationDeltaEventArgs.ManipulationOrigin contains center point of the pinch gesture. The coordinates are relative to the ManipulationDeltaEventArgs.ManipulationContainer, which could be set in the handler of ManipulationStarting event.

Example code:

private void object_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    ...
    // If this was a multitouch gesture 
    // (like pinch/zoom - indicated by e.DeltaManipulation.Scale)
    // the following line will get us point between fingers.
    Point position = e.ManipulationOrigin;
    ...
}
0

精彩评论

暂无评论...
验证码 换一张
取 消