njsokalski
Well-known member
- Joined
- Mar 16, 2011
- Messages
- 102
- Programming Experience
- 5-10
I have an application in which I want to get the point currently being touched during a Manipulation event. I currently have the following test code:
<Grid>
<Image Name="imgManipulation" HorizontalAlignment="Left" Stretch="None" VerticalAlignment="Top" Height="750" Width="480"/>
</Grid>
Private Sub imgManipulation_ManipulationDelta(sender As Object, e As System.Windows.Input.ManipulationDeltaEventArgs) Handles imgManipulation.ManipulationDelta
System.Diagnostics.Debug.WriteLine("{0},{1}", e.CumulativeManipulation.Translation.X, e.CumulativeManipulation.Translation.Y)
End Sub
Private Sub imgManipulation_ManipulationStarted(sender As Object, e As System.Windows.Input.ManipulationStartedEventArgs) Handles imgManipulation.ManipulationStarted
System.Diagnostics.Debug.WriteLine("Origin: {0},{1}", e.ManipulationOrigin.X, e.ManipulationOrigin.Y)
End Sub
And when I run the debugger/emulator, I receive output such as the following:
Origin: 31,36
-2,0
-4,0
-7,0
-9,0
In this particular example, I slid to the left edge of the emulator screen. Several things I have noticed that I don't understand are:
1. Each X,Y has a difference of either 2 or 3 from the previous one. I would have expected them to have a difference of 1. Why is the event not being fired for every point? Is this only on the emulator, or do I need to do something different?
2. Because I slid to the edge of the emulator screen, I would have expected the last X to be the opposite of the origin X, but it is not (31-9 does not equal 0). Instead, it seems to always come out to a value of 22 (31-9=22). Where do these extra 22 come from, and what can I do about them?
I am somewhat new to detecting and working with exact coordinates in Windows Phone 7, so can somebody tell me how to get and/or detect the following:
1. The currently touched point relative to the upper-left of the element
2. The currently touched point relative to the upper-left of the screen
Any help is appreciated. Thanks.
<Grid>
<Image Name="imgManipulation" HorizontalAlignment="Left" Stretch="None" VerticalAlignment="Top" Height="750" Width="480"/>
</Grid>
Private Sub imgManipulation_ManipulationDelta(sender As Object, e As System.Windows.Input.ManipulationDeltaEventArgs) Handles imgManipulation.ManipulationDelta
System.Diagnostics.Debug.WriteLine("{0},{1}", e.CumulativeManipulation.Translation.X, e.CumulativeManipulation.Translation.Y)
End Sub
Private Sub imgManipulation_ManipulationStarted(sender As Object, e As System.Windows.Input.ManipulationStartedEventArgs) Handles imgManipulation.ManipulationStarted
System.Diagnostics.Debug.WriteLine("Origin: {0},{1}", e.ManipulationOrigin.X, e.ManipulationOrigin.Y)
End Sub
And when I run the debugger/emulator, I receive output such as the following:
Origin: 31,36
-2,0
-4,0
-7,0
-9,0
In this particular example, I slid to the left edge of the emulator screen. Several things I have noticed that I don't understand are:
1. Each X,Y has a difference of either 2 or 3 from the previous one. I would have expected them to have a difference of 1. Why is the event not being fired for every point? Is this only on the emulator, or do I need to do something different?
2. Because I slid to the edge of the emulator screen, I would have expected the last X to be the opposite of the origin X, but it is not (31-9 does not equal 0). Instead, it seems to always come out to a value of 22 (31-9=22). Where do these extra 22 come from, and what can I do about them?
I am somewhat new to detecting and working with exact coordinates in Windows Phone 7, so can somebody tell me how to get and/or detect the following:
1. The currently touched point relative to the upper-left of the element
2. The currently touched point relative to the upper-left of the screen
Any help is appreciated. Thanks.