Archief voor de rubriek ‘WPF’

Surface controls beschikbaar voor Windows 7 Touch (beta)

Het werd aangekondigd op PDC09 dat de inspanningen van het Microsoft Surface team niet beperkt zouden blijven tot de Surface hardware.  Meer nog, in de toekomst zullen de Surface API en Windows Touch API versmelten. Het is ook logisch, want waarom twee verschillende systemen aanbieden en onderhouden voor iets wat gestoeld is op dezelfde principes: NUI of natural user interface.

Een eerste publiek aanbod is de Microsoft Surface Toolkit voor Windows Touch. Het is een reeks controls ontleend aan Microsoft Surface, die nu beschikbaar zijn voor Windows 7 Touch apparaten.  De API is nog in bèta en een officiële releasedatum is nog niet vastgesteld, maar je hoeft nu geen dure Surface tafel meer te kopen om van de voordelen van multitouch (ontwikkeling) te kunnen genieten.

Wat heb je er voor nodig: Visual Studio 2010 en .Net 4.0 (incl. WPF) en natuurlijk een touch screen.

Download de Microsoft Surface Toolkit voor Windows Touch
Bekijk de video.

Microsoft Touch Pack voor Windows 7

Tegelijk is nu ook het Microsoft Touch Pack voor Windows 7 beschikbaar, een reeks touch applicaties ontwikkeld door het Surface team.

Download MS Touch Pack voor Windows 7

Grando met MultiTouch op Batibouw 2010

Grando Keukens pakt uit op Batibouw 2010 met een heel interactieve stand: maar liefst 6 interactieve schermen werden geplaatst waar je de Grando-catalogus kan doorzoeken, je keuzes naast elkaar plaatsen en samen op zoek kan gaan naar je favoriete keuken. Wil je thuis nog eens alles rustig bekijken, dan kan je ook het digitale Inspiratieboek bestellen door je gegevens achter te laten op één van de multi-touch schermen.

Stilte voor de storm: laat het grote publiek nu maar komen

Ocular zorgde voor de high-tech hardware (de multitouch schermen).
Jimability schreef de multi-touch software die op deze schermen draait, op basis van Windows 7 en Microsoft .Net.

Ga het zelf eens uitproberen op Batibouw (nog tot 7 maart) in Hall 11 van de Brussels Expo.

Manipulation, MatrixTransformation en Canvas.Top, Canvas.Left

Een van de meest voor de hand liggende multitouch-toepassingen is het manipuleren van beelden: scale, rotate and translate. Met de Manipulation events van WPF4 (op Windows 7) is dit eenvoudig. Het komt erop neer de matrix van de transformatie aan te passen.

In een eenvoudig voorbeeld, bleek dit te werken. Maar in een echt project-voorbeeld kreeg ik het verkleinen/vergroten en roteren niet goed. Het leek alsof deze gebeurden tegenover een center-punt dat ver buiten het gemanipuleerd object lagen. Na lang zoeken en een paar suggesties van Anson Tsao kwam ik eruit.

Screenshot: Touch Manipulation Issue Het exact positioneren van een image door middel van Canvas.Top en Canvas.Left conflicteert met het gebruik van RenderTransformations.  Je kan beter je positionering in de MatrixTransformation zetten:

<Image Source=”/TouchTransformIssue;component/images/Koala.jpg” Width=”200″ x:Name=”imageKoala” IsManipulationEnabled=”True”>
<Image.RenderTransform>
<MatrixTransform Matrix=”1,0,0,1,200,100″/>
</Image.RenderTransform>
</Image>

In bijgaande code kan je het effect zien door Canvas.Top/Canvas.Left te gebruiken.

(download code)

WPF4 Beta 2 (Preview)TouchDown bug

Werkend met de Touch Events van WPF4 Beta 2, kwam ik op een vervelend bugje. Blijkbaar worden de TouchDown en PreviewTouchDown events pas afgevuurd net vóór TouchUp en PreviewTouchUp. Dit is niet alleen zo bij je eigen EventHandlers, maar ook het default gedrag van bv. Buttons.

En toch, toch had ik het al zien werken.

Via Szymon Kobalczyk’s Blog kwam ik op de IsManipulationEnabled property.  Normaal gezien gebruik ik deze alleen in combinatie met de Manipulation events (Delta, Starting, …).

Het komt er hier op neer: als je IsManipulationEnabled op true zet, dan komen de TouchDown en PreviewTouchDown events wél goed door.

Maar ik vond nog meer. Het volstaat om de property aan en vervolgens weer af te zetten opdat de events zouden doorkomen.

Je kan het zelf uitproberen. Bij (Preview)TouchDown van de Border controls, wordt de rand dikker getekend.

Download Source code