Click here to Skip to main content
15,886,110 members
Articles / Desktop Programming / WPF

Image Manipulation in Multitouch Development

Rate me:
Please Sign up or sign in to vote.
4.81/5 (8 votes)
3 Apr 2010CPOL3 min read 60.9K   2.5K   19  
In this article, I will describe Image manipulation in Windows 7 multitouch Environment
using System;
using System.Windows;
using Windows7.Multitouch;
using Windows7.Multitouch.Manipulation;
using Windows7.Multitouch.WPF;

namespace Win7MultitouchDemo
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        // object of a .Net Wrapper class for processing multitouch manipulation
        private ManipulationProcessor manipulationProcessor = new ManipulationProcessor(ProcessorManipulations.ALL);
        private static bool IsMultitouchEnabled = TouchHandler.DigitizerCapabilities.IsMultiTouchReady;

        public Window1()
        {
            InitializeComponent();

            this.Loaded += new RoutedEventHandler(Window1_Loaded);
        }

        void Window1_Loaded(object sender, RoutedEventArgs re)
        {
            // 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;
            }
        }

        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;
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead
India India

Kunal Chowdhury is a former Microsoft "Windows Platform Development" MVP (Most Valuable Professional, 2010 - 2018), a Codeproject Mentor, Speaker in various Microsoft events, Author, passionate Blogger and a Senior Technical Lead by profession.

He is currently working in an MNC located in India. He has a very good skill over XAML, C#, Silverlight, Windows Phone, WPF and Windows app development. He posts his findings, articles, tutorials in his technical blog (www.kunal-chowdhury.com) and CodeProject.


Books authored:


Connect with Kunal on:





Comments and Discussions