Search code examples
c#wpfpixelsense

StylusEvent on Windows Surface Pro


I'm developing an application for a Windows Surface Pro. I need to gather the pen pressure on the screen and i figuret out to do.

After solving some issue due to Event (StylusDown, StylusUp and other Stylus event are never raised, bu only mouse event) i landed in a work around.

I will show you the code (taken from some microsoft guide) Basically is a filter for raw event

class MyFilterPlugin : StylusPlugIn
{
    protected override void OnStylusDown(RawStylusInput rawStylusInput)
    {
        // Call the base class before modifying the data. 
        base.OnStylusDown(rawStylusInput);

        Console.WriteLine("Here");
        // Restrict the stylus input.
        Filter(rawStylusInput);
    }

    private void Filter(RawStylusInput rawStylusInput)
    {
        // Get the StylusPoints that have come in.
        StylusPointCollection stylusPoints = rawStylusInput.GetStylusPoints();

        // Modify the (X,Y) data to move the points  
        // inside the acceptable input area, if necessary. 
        for (int i = 0; i < stylusPoints.Count; i++)
        {
            Console.WriteLine("p: " + stylusPoints[i].PressureFactor);
            StylusPoint sp = stylusPoints[i];
            if (sp.X < 50) sp.X = 50;
            if (sp.X > 250) sp.X = 250;
            if (sp.Y < 50) sp.Y = 50;
            if (sp.Y > 250) sp.Y = 250;
            stylusPoints[i] = sp;
        }

        // Copy the modified StylusPoints back to the RawStylusInput.
        rawStylusInput.SetStylusPoints(stylusPoints);
    }

Added as Filter in StylusPlugin

StylusPlugIns.Add(new MyFilterPlugin());

While i run this, however, i always get 0.5 as PressureFactor (the default value) and inspecting more deep I still can see the evironment of Stylus is not properly set (his Id is 0 for example).

There is a way to gather StylusEvent correctly? The main point is: i need to gather the pressure (how much pressure) of the pen on the screen.

Thanks a lot.

Some Info: i'm developing with visuals tudio 2012 Ultimate, on a win 7 Pc. I deploy the application in a Surface Pro with windows 8.1. I installed and configured the Surface SDK 2.0 and the Surface Runtime.


Solution

  • For completition i have solved this.

    Stylus event (don't know how) conflicted with the Surface SDK. Once i removed the SDK reference from the project all went smooth and the problem i solved. Now i can gather correctly the pressure of each pen touch and on pen move.

    I post this only for community information.