Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP Session Objectives And Agenda Data Visualization: WPF & XAML…and Silverlight…and Surface…and Windows 7 Touch Session Objective: To get you excited by showing you “what you can do” so that you start doing it. Why you need Rich Client Applications Rich Client Technology Roadmap & Guidance Demos, demos, demos!... About… InterKnowlogy (www.InterKnowlogy.com) Tim Huckaby, CEO (TimHuck@InterKnowlogy.com) Custom Application Development / Consulting / Software & Systems Engineering Firm headquartered in Carlsbad, CA Design, Architect, Build and Deploy Enterprise Class Applications Industry Experts: Most of the employees are published Microsoft .NET Application development since 2000! Microsoft .NET Smart Client pioneers / industry leaders Information Worker Solutions (VSTO & SharePoint) Integration / Messaging, B2B / B2C, Wireless / Mobility Leading Edge: Surface, WPF, Silverlight, SharePoint, OBA, Windows 7 Touch Cutting Edge Solutions on emerging Microsoft technologies Largest Customer: Microsoft The Incredible Race Condition: My Code: 3370 WPF 3D: The Scripps Research Institute VitruView AutoCad - dwfviewer Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP What the heck is XAML? Separates the front-end from the back-end Simple declarative programming language suitable for constructing and initializing .NET Objects Usually the most concise way to represent user interfaces (or other hierarchies of objects) Doesn’t need a compile to render The language that almost all WPF related tools emit Sample XAML Runs in a WPF Application: <Window x:Class="WpfApplication2.Window1“ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <TextBlock>Hello World</TextBlock> </Grid> </Window> Runs in the Browser: <Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <TextBlock>Hello World</TextBlock> </Grid> </Canvas> XAML Demo WPF and Declarative Programming XAML replaces code Attributes control Layout and Style Event handlers wired-up in XAML Declarative Data Binding The Big 4 “XAML-based” Technologies WPF (Windows XP and above) Silverlight Surface WPF 4.0 Touch (Windows 7) Surface! Surface: C-ME VitruView Library of Congress Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP Lightweight WPF runtime Interactive experiences for devices, PC, & Mac platforms (and others…) Strict subset of Windows Presentation Foundation Lightweight download (4.2mbs) Programming model uses XAML + Jscript + WPF Access to WPF tooling WPF-based Tools <XAML> <Button Width="100px"> OK <Button.Background> LightBlue </Button.Background> </Button> </XAML> •Silverlight 43Things.com & InterKnowlogy Wish 43 Library of Congress Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP WPF – how does it work? Built on Top of Direct 3D Converted to 3D triangles, textures and other Direct3D objects & then rendered by hardware Benefits of hardware acceleration & performance due to work being off-loaded to GPUs (unlike GDI based systems) Ensures the maximum benefit of new hardware and drivers Software rendering pipeline as fallback EMN8 & REZN8 WPF Emn8 from our Marketing VP Madeline Pantalone: “It's okay for you to use application for demonstration as long as you are sure to preface it with the phrase: "This is test data only. Products you see may have been created for testing purposes only." Why WPF? The GDI & USER subsystems were introduced in Windows 1.0 in 1985 OpenGL – Early 90s DirectX – 1995 Goal: Overcome the limits of GDI+ & USER with the productivity of .NET WPF Audience Participation Time 1. Does WPF enable me to do something I couldn’t have done before? No. Unless you factor in time & money… And would like to do more with less… 2. Is DirectX dead? No. It is more applicable to advanced 3D developers writing hard-core “twitch” games. 3. Are Winforms dead? No. …but it will not be advanced; the last version was 2.0 in .NET 2005. WPF / Winforms Integration is simple Windows 98 Supports WinForms 4. Does WPF run better on Vista & Win 7 than on XP? Yes. 3D objects only get anti-aliasing on Windows Vista or Later Non-rectangular windows only get hardware acceleration on Vista. Vista has a driver model that helps with resource contention 5. Does Silverlight trump all this other WPF Stuff? One would think so with all the marketing dollars that are being thrown at it…. But, in Reality the answer is “No” and it makes solution architecture more important than ever. Windows 7 Multitouch: VitruView TouchPaint Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP Surface demos & Windows 7 Touch, WCF, Surface Integration Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP Peer-to-Peer “Flicking” Windows 7 WPF & Microsoft Surface Unified MultiTouch UX Surface ScatterView WPF Multi-Touch Manipulations Simulated Spatial Data Transfer Duplex WCF web service Spatial awareness between clients Transfer annotations, scale, orientation, etc. WCF Service Client(s) WCF Service Service Host Client(s) WPF: Where to go Next Free Resources WindowsClient.net - this is the official Microsoft community portal for WPF development, and is chock full of great resources such as the... Learn WPF page - this page links to podcasts, labs, and the very popular "how do I?" videos MIX University's WPF Bootcamp - this is a full 3-day video training course on WPF, in which expert instructors guide you from the surface into the depths of the technology stack Where to go next Windows Presentation Foundation Unleashed (WPF) by Adam Nathan, Daniel Lehenbauer Essential Windows Presentation Foundation (WPF) by Chris Anderson Where to go next The InterKnowlogy WPF & Silverlight Reference Applications Where to go…soon… Windows Presentation Foundation A Scenario-Based Approach by Billy Hollis “Early April…I hope…” B. Hollis, 12/7/07 “October…” B. Hollis, 6/3/08 “It’s not going to be done in April.” • • B. Hollis, 2/24/09 “I took a .NET 4.0 dependency. Projected date now Jan 2010, because it can’t come out until VS2010 is released.” B. Hollis, 4/29/09 Where to go…soon… Windows Client Guidance Microsoft Platform Solution Architecture for the Application Developer by Tim Huckaby The “anchor document” to a ton of Rich Client Guidance Tim Huckaby, InterKnowlogy More info on InterKnowlogy: www.InterKnowlogy.com Contact me: Tim Huckaby E-mail: TimHuck@InterKnowlogy.com Phone: 760-444-8640 Blog: http://team.interknowlogy.com/blogs/timhuckaby About Tim Huckaby CEO, InterKnowlogy Microsoft® Regional Director – Southern California Microsoft® .NET Partner Advisory Council Founder / Member Microsoft® MVP - .NET Microsoft® Surface Partner Advisory Council INETA Speaker – International .NET Users Group Association Windows and .NET Magazine Advisory Board Member .NET Developers Journal Magazine Advisory Board Member Author / Speaker The Incredible Race Condition: My Code: 3370 Surface: Craps Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP Surface Craps Background image with interaction layer on top WPF 3D dice with support for “rolling” by flicking BettableArea control to define bet areas and control chip positioning on the table Opacity = “0” at runtime, used at design time for layout ScatterView on top of all to show “on-table help” Background = “{x:Null}” allows for contacts to click through to layers underneath BettableArea Control Derives from Canvas Arranges child controls (“chips”) according to attached properties that define positioning <controls:BettableArea x:Name="Pass" BetType="Pass" ChipLocation1="{Binding ElementName=Pass_Chips1}" ChipLocation2="{Binding ElementName=Pass_Chips2}" > <Path ... /> <Ellipse x:Name="Pass_Chips1" ... /> <Ellipse x:Name="Pass_Chips2" ... /> ... </controls:BettableArea> Accepts ContactDown with Byte tag to place a bet Position of chip based on ChipLocation and tag ID BettableArea at Design Time Path elements define content area of the bettable area (“Field”) Ellipse elements define final position of chips in a given area (correlated using attached property) BetLogic Base class with virtual ProcessRollResult( ) Derived classes for each bet region (“Pass”, “Field”, etc.) GameTable loops through all BetLogic classes after each roll to determine outcome Each overridden ProcessRollResult uses IsComeOutRoll and LastRoll properties to determine outcome (Win,Lose,nothing) Hidden Slides Start Here All Relevant to the Content Some had to been hidden / Removed for Political reasons Hidden Slides End Here All Relevant to the Content Some had to been hidden / Removed for Political reasons Resources www.microsoft.com/teched www.microsoft.com/learning Sessions On-Demand & Community Microsoft Certification & Training Resources http://microsoft.com/technet http://microsoft.com/msdn Resources for IT Professionals Resources for Developers www.microsoft.com/learning Microsoft Certification and Training Resources Related Content Breakout Sessions (session codes and titles) Interactive Theater Sessions (session codes and titles) Hands-on Labs (session codes and titles) Hands-on Labs (session codes and titles) Track Resources Resource 1 Resource 2 Resource 3 Resource 4 Complete an evaluation on CommNet and enter to win! © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.