Windows 7 Multitouch Application Development (Part - I)
Microsoft is going to launch the new Windows 7 operating system in October 2009. Currently the RC version is available online. As you know, ...- Article authored by Kunal Chowdhury on .
Microsoft is going to launch the new Windows 7 operating system in October 2009. Currently the RC version is available online. As you know, ...- Article authored by Kunal Chowdhury on .
<Grid> <Image Source="images/Hydrangeas.jpg"/> </Grid>Add RenderTransform to the image so that, we can scale or rotate the image properly. This will produce XAML similar to this:
<Grid> <Image Source="images/Hydrangeas.jpg" RenderTransformOrigin="0.5,0.5" Width="400"> <Image.RenderTransform> <TransformGroup> <ScaleTransform x:Name="trScale" ScaleX="1" ScaleY="1"/> <RotateTransform x:Name="trRotate" Angle="0"/> <TranslateTransform x:Name="trTranslate" X="0" Y="0"/> <SkewTransform AngleX="0" AngleY="0"/> </TransformGroup> </Image.RenderTransform> </Image> </Grid>Use proper names when you are adding different types of transform to the transform group. It will be easier for you to handle it from the code behind file. Run your application. This will open up your Window with an image inside it. If you want to drag or rotate the image this will not work because we haven’t integrated the functionality yet. Add two project references i.e. “Windows7.Multitouch” & “Windows7.Multitouch.WPF” from the extracted zip folder to your solution. These are the managed API codes for multitouch application development. Go to your Window1.xaml.cs & be sure that following namespaces are already included. You may have to add some of them.
using System; using System.Windows; using Windows7.Multitouch; using Windows7.Multitouch.Manipulation; using Windows7.Multitouch.WPF;Create two private members inside your partial class:
// object of a .Net Wrapper class for processing multitouch manipulation private ManipulationProcessor manipulationProcessor = new ManipulationProcessor(ProcessorManipulations.ALL); // boolean value to check whether you have a multitouch enabled screen private static bool IsMultitouchEnabled = TouchHandler.DigitizerCapabilities.IsMultiTouchReady;Now inside the Window Loaded event write the following lines of code:
// check to see whether multitouch is enabled if (IsMultitouchEnabled) { // enables stylus events for processor manipulation Factory.EnableStylusEvents(this); // add the stylus events StylusDown += (s, e) => { manipulationProcessor.ProcessDown((uint)e.StylusDevice.Id, e.GetPosition(this).ToDrawingPointF()); }; StylusUp += (s, e) => { manipulationProcessor.ProcessUp((uint)e.StylusDevice.Id, e.GetPosition(this).ToDrawingPointF()); }; StylusMove += (s, e) => { manipulationProcessor.ProcessMove((uint)e.StylusDevice.Id, e.GetPosition(this).ToDrawingPointF()); }; // register the ManipulationDelta event with the manipulation processor manipulationProcessor.ManipulationDelta += ProcessManipulationDelta; // set the rotation angle for single finger manipulation manipulationProcessor.PivotRadius = 2; }Write your logic inside the manipulation event handler implementation block. Here I will do rotation, scaling & positioning of the image. Here is my code:
private void ProcessManipulationDelta(object sender, ManipulationDeltaEventArgs e) { trTranslate.X += e.TranslationDelta.Width; trTranslate.Y += e.TranslationDelta.Height; trRotate.Angle += e.RotationDelta * 180 / Math.PI; trScale.ScaleX *= e.ScaleDelta; trScale.ScaleY *= e.ScaleDelta; }From the ManipulationDeltaEventArgs you can get various values & depending upon them you can implement your functionality in this block. TranslateTransform will position the image, RotateTransform will do the rotation & the ScaleTransform will resize the image. Run your project to test your first multitouch application.
Thank you for visiting our website!
We value your engagement and would love to hear your thoughts. Don't forget to leave a comment below to share your feedback, opinions, or questions.
We believe in fostering an interactive and inclusive community, and your comments play a crucial role in creating that environment.