Entwickeln für den Tablet PC Das Microsoft Tablet PC Platform SDK

Slides:



Advertisements
Ähnliche Präsentationen
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Advertisements

Daten fließen lassen XML in Microsoft Office 2003 Lorenz Goebel Frank Fischer
Office XP und XML Web Services Dariusz Parys.NET Strategy & Developer Group
Agenda DataAssist e.K. Probleme heutiger Ansätze der Netzwerkdokumentation Management der Netzwerkdokumentation Management von Rechnern Der NetDoc Server.
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Objektorientierung mit VBA
Java2D Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
Ein Beispiel in Java.
Polymorphie (Vielgestaltigkeit)
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Sommersemester 2003 Lars Bernard
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Java-Kurs Grafik Julian Drerup.
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
Programmieren mit JAVA
Introducing the .NET Framework
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Einführung in Visual C++
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Datensammlung
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Wizards & Builders GmbH ActiveX-Controls Verwendung und Einsatz von ActiveX-Controls unter Microsoft Visual FoxPro.
Visual FoxPro Objektorientierte Programmierung. © 1999 TMN-Systemberatung GmbH Grundbegriffe n Objekte n Eigenschaften n Methoden n Objektnamen n Klasse.
VFP Class Browser. © 1999 TMN-Systemberatung GmbH Einsatz des Class Browser n Managen von Klassen inklusive, ändern, umbenennen, löschen und umdefinieren.
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
JDBC: JAVA Database Connectivity
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
MS Excel, Open-/LibreOffice Calc Die Menüs I Office-Logo (Excel2007) bzw. Datei (andere): die Standard-Datei- und Druckoperationen; bei MS Excel hier auch.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Clustered Neuronal Network A C#.NET project for Compute Cluster Server 2003.
SharePoint 2010 for Information Architects
SQL Server 2005 CLR-Integration
Michael Köster User Experience Specialist Microsoft Corporation.
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
Graphics in PDF Universität zu Köln Intelligente Dateisysteme Prof. Dr. Manfred Thaller WS 2013/14 Leonard Bornefeld-Ettmann.
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
Claudia Fischer Licensing Marketing Manager Jochen Katz Product Manager – Windows Server Anna Fetzer Product Manager – System Center.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
.net c# Gruppe 3 Image Viewer Realisierbarkeit in C# Hackl, Lamprecht, Leimer.
Bonn-to-code.net Nutzung von.NET User Controls in Legacy Code Sascha Lehmann
Programmierpraktikum Java SS 2005
Objectives Verstehen was unterDelegate verstanden wird
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Microsoft PowerPoint Eine Einführung in Gebrauch und Begriffe der Präsentationssoftware Für die 10er Informatik-Kurse Herzlichen Dank an Herrn May, Robert-Bosch.
Warum IIS? Best of Microsoft Webserver
User Interface Design and Evaluation
MSDN TechTalk Anwendungen integrieren in Microsoft Dynamics CRM 4.0.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Windows Interface Guidelines for Software Design1 The Windows Interface Guidelines for Software Design.
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
Arbeiten in einem agilen Team mit VS & TFS 11
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Microsoft Silverlight Autor: Christian Pirker. Inhalt Einführung Silverlight Einführung XAML Silverlight 1.0 und 1.1 Silverlight 2.0 Silverlight 3.0 Ausblick.
Was gibt’s neues im Bereich Anpassung Fabian Moritz Consultant, Developer SharePointCommunity.de.
Promise EX4650 & EX8650 Controller Allgemeines: – Es müssen immer Festplatten Konfiguriert werden, da ansonsten für das Betriebssystem keine Laufwerke.
 Präsentation transkript:

Entwickeln für den Tablet PC Das Microsoft Tablet PC Platform SDK Frank Prengel, <frankpr@microsoft.com> Technologieberater .NET Strategy & Developer Group Microsoft Deutschland GmbH

Agenda Tablet PC: Hardware & Software Tablet-Funktionalität Stifteingabe Digitale Tinte Schrifterkennung Entwickeln für den Tablet PC Das SDK im Überblick Managed Libraries Design-Richtlinien Zusammenfassung

... und ganz wichtig: Input erbeten! Ihre Ideen Ihre Meinungen Ihre Vorstellungen Ihre Wünsche Ihre Kritik

Back to the Future Der Tablet PC hat viele Vorgänger ...

before it´s railroading time. Was haben wir gelernt? You can´t railroad before it´s railroading time. Robert Heinlein

2002 – der Tablet PC Die gewohnte PC-Infrastruktur: Windows XP Die Mobilität eines Sub-Notebooks Die Flexibilität von Stift + Papier

Agenda Tablet PC: Hardware & Software Tablet-Funktionalität Stifteingabe Digitale Tinte Schrifterkennung Entwickeln für den Tablet PC Das SDK im Überblick Managed Libraries Design-Richtlinien Zusammenfassung

Hardware (1/2) Elektromagnetischer Digitizer unter dem LCD kabelloser Stift erkennt "hovering" kann Neigung & Rotation erkennen Abtastrate > 100 Hz Auflösung > 600 dpi

Hardware (2/2) Tablet-Buttons "Grab and go" Ersatz für CTRL+ALT+DEL UP, DOWN, ENTER, ESCAPE "Grab and go" zuverlässiges Hotplugging Landscape- und Portrait-Darstellung ohne Reboot "Aufwachen" aus dem Stand-By-Modus < 3 Sek. Legacy-free kein PS/2, RS232, LPT, ... USB, Firewire; evtl. (W)LAN, Bluetooth, ...

Software (1/2) Betriebssystem: Microsoft Windows XP Professional Windows XP Service Pack 1 .NET Framework 1.0 SP2 Tablet PC Components Windows XP Professional Tablet PC Compo-nents Service Pack 1

Software (2/2) Tablet-spezifische Software: außerdem verfügbar: Stifteingabe Ink-Steuerelemente Gesten-, Schrift- und Spracherkennung Input Panel Windows Journal Sticky Notes Ink Ball außerdem verfügbar: Microsoft Office XP Pack for Tablet PC Snippet Tool

Agenda Tablet PC: Hardware & Software Tablet-Funktionalität Stifteingabe Digitale Tinte Schrifterkennung Entwickeln für den Tablet PC Das SDK im Überblick Managed Libraries Design-Richtlinien Zusammenfassung

API / Run-Time Interfaces Architektur ... im Überblick: Gestures Ink Recognition Kernel Mode User Mode API / Run-Time Interfaces Recognizers Microsoft (US, JPN, etc.) Gestures, Shapes Others Mouse Driver HID HID Mini Custom Interaktion mit Hardware nur über Gesture-Komponenten

Tablet Input Subsystem Anwendungen erhalten Pen-Input-Daten durch Shared Memory Queue (nicht durch Windows Messages) HID Input Device * WISP = Windows Ink Services for Pen

Gesten System Gestures Application Gestures Hover, Tap, Double-Tap, Tap-and-Hold, etc. emulieren Mausaktionen Application Gestures Backspace, Enter, Scratch-out, etc. Shortcuts für bestimmte Aktionen

Ink Ein erster Test. "digitale Tinte" – so natürlich wie möglich Echtzeitrendern, Bezièrkurven, Anti-Aliasing Drucksensitivität, Stiftformen, subtraktives Farbmischen für handschriftliche Eingabe für visuelles Feedback & Anmerkungen Ein erster Test.

Schrifterkennung sekundär & nicht vollkommen! Texteingabe

Agenda Tablet PC: Hardware & Software Tablet-Funktionalität Stifteingabe Digitale Tinte Schrifterkennung Entwickeln für den Tablet PC Das SDK im Überblick Managed Libraries Design-Richtlinien Zusammenfassung

Entwickeln für den Tablet PC "Think in Ink" Ink als eigenständiger Datentyp kann als solcher gespeichert & verarbeitet werden Schrifterkennung ist kein vollwertiger Tastatur-Ersatz besondere Anforderungen an das User Interface vereinfachte & natürliche Dateneingabe Größe der Controls Entdecke die Möglichkeiten!

Das Tablet PC Platform SDK aktuelle Version: 1.5 unterstützte Plattformen: Windows 2000 Professional SP2 * Windows XP Professional * Windows XP Tablet PC Edition unterstützte Tools: Visual Studio 6.0 SP5 Visual Studio .NET Visual Studio .NET 2003 (* Keine Schrifterkennung. Ohne SDK keine Ink Collection.)

Das Tablet PC Platform SDK Managed (= .NET) APIs für Stift & Ink COM Automation APIs (C/C++, VB6) Ink Controls InkEdit, InkPicture Dokumentation Beispielanwendungen Laufzeitbibliotheken für die Verwendung des SDK auf Nicht-Tablet-PCs

Tablet PC Platform

Das SDK im Überblick

Managed APIs Tablet Input API (Pen API) Ink & Gestures sammeln Pen Buttons abfragen Ink Data Management API (Ink API) Ink speichern & bearbeiten Ink Recognition API (Recognition API) Ink inter- pre- tieren

Objektmodell InkCollector InkOverlay Ink Strokes Stroke Renderer DrawingAttributes Tablet Recognizers Pen API Recognizer Ink API RecognizerContext Reco API

Pen API

Pen API - Überblick Tablet & Tablets Cursor & Cursors Info über verfügbare Digitizer & Input Devices Cursor & Cursors Info über verfügbare (abstrakte) Stiftspitzen InkCollector & InkOverlay Ink aufnehmen & anzeigen Events zu Gesten, Buttons & Tips InkOverlay: Auswahl & Löschen zusätzlich

Tablets Information über vorhandene Digitizer Tip Pressure Winkel zwischen Tablet & Stift Stiftrotation Auflösung Hovering & Abstand Stift-Tablet Cursor-ID Tablet PnP-ID

Die Klasse Tablet wichtige Eigenschaften: wichtige Methoden: HardwareCapabilities CursorMustTouch, CursorsHavePhysicalIds, HardProximity, Integrated MaximumInputRectangle Name PlugAndPlayId wichtige Methoden: IsPacketPropertySupported(System.Guid) GetPropertyMetrics(System.Guid) DeviceWalker

InkCollector Echtzeit-Ink-Input für Anwendungen "Ink Canvas": Region für Input einfach einschalten: InkCollector ic = new InkCollector(Handle); ic.Enabled = true; diverse Events Stroke, Gesture Pen Movement: CursorInRange, CursorButtonDown, NewPackets etc. Mouse Trigger Events: DoubleClick etc. Tablet Hardware Events: TabletAdded, TabletRemoved InkCollector InputWatcher

InkOverlay enthält InkCollector ermöglicht zusätzlich Bearbeiten & Löschen: InkOverlayEditingMode Ink Select: Lasso-Modus für Auswahl, Resizing etc. Delete: Löschmodus EraserMode StrokeErase PointErase ( -> EraserWidth (in 1/100 mm) ) zusätzliche Events: Rendering: Painting, Painted Editing: SelectionChanging, StrokesDeleted etc. HelloInkOverlay

Packets Datenblöcke mit Ink-Information können enthalten (PacketProperty): X, Y, PacketStatus , NormalPressure, RollRotation etc. HW- & treiberabhängig! Anwendung kann angeben, welche Daten sie verwenden möchte: ic.DesiredPacketDescription = new Guid[] { PacketProperty.X, PacketProperty.Y };

Packets anschaulich PacketPropWatcher

Ink API

Ink API Ink, Stroke & Strokes DrawingAttributes Ink-Datenstruktur & einzelne Linienzüge Laden & Speichern aus Streams & Clipboard möglich DrawingAttributes optisches Erscheinungsbild der Linienzüge, wie z.B. Farbe, Transparenz, Linienstärke, Antialiasing

Ink verwaltet, manipuliert & speichert Input von InkCollector & InkOverlay enthält Strokes und Strokes-Collection unterstützt "hit detection" Koordinatensystem: HIMETRIC (Einheit: 0.01mm) Events: InkAdded, InkDeleted

Stroke Stroke: Datensatz, aufgenommen während einer Sequenz Pen Down  Pen Move  Pen Up Sammlung von Packets besitzt eindeutige ID (int) im Ink-Objekt Achtung: Jede Stiftaktion erzeugt einen Stroke!  Nicht jeder Stroke ist sichtbar! besitzt Eigenschaft Deleted (!) Manipulation über das Ink-Objekt: AddStrokesAtRectangle, CreateStroke(Point[] pts), DeleteStroke, DeleteStrokes, ExtractStrokes etc. StrokeIdViewer

Strokes Strokes –Collection gehört zu Ink-Objekt read-only; enthält Verweise auf Stroke-Objekte; kein Ownership Bsp.: InkOverlay.Selection erzeugen: Strokes CreateStrokes(); Strokes CreateStrokes(int[] ids); Methoden: Add, Clear, Remove, Contains etc. Events: StrokesAdded, StrokesDeleted

Ink rendern (1) Klasse Renderer kann Ink-Daten in grafischen Output "übersetzen" unterstützt Zoom, Größenänderungen, Scrollen, Rotation

Ink rendern (2) InkCollector & InkOverlay haben Renderer-Eigenschaft Draw-Methode kann auf Graphics-Objekt oder Device Context zeichnen: void Draw(Graphics g, Stroke s) void Draw(Graphics g, Stroke s, DrawingAttributes da) void Draw(Graphics g, Strokes strokes) void Draw(IntPtr hdc, Stroke s) void Draw(IntPtr hdc, Stroke s, DrawingAttributes da) void Draw(IntPtr hdc, Strokes strokes) Umwandlung HIMETRIC  Pixel: InkSpaceToPixel, PixelToInkSpace

Transformationen Verschieben: Move(float dx, dy) Art der Transformation Linienstärke skaliert? object nein view ja Verschieben: Move(float dx, dy) Drehen: Rotate(float deg [, Point pt]) Skalieren: Scale(float fx, fy [, bool scaleWidth]) Transformieren: GetObjectTransform(ref Matrix m) GetViewTransform(ref Matrix m) SetObjectTransform(Matrix m) SetViewTransform(Matrix m) InkMagnify

DrawingAttributes Formatierungsinfos für die Darstellung von Ink: bool AntiAliased Color Color bool FitToCurve: Gerade oder Bézier? float Height: für rechteckige Stiftspitze bool IgnorePressure PenTip PenTip: Ball, Rectangle RasterOperation RasterOperation: CopyPen (normaler Stift), MaskPen (Text Marker) etc. byte Transparency: 0=undurchsichtig, 255=unsichtbar float Width: in HIMETRIC-Einheiten InkFormatter

Strokes für Fortgeschrittene Punkte eines Linienzugs bearbeiten: Point[] Stroke.GetPoints(...) int Stroke.SetPoints(...) Point[] Stroke.GetFlattenedBezierPoints(...) ... Schnittpunkte: float[] SelfIntersections float[] FindIntersections(Strokes sks) StrokeIntersection[] GetRectangleIntersections Packets: int[] GetPacketData(...) int[] GetPacketValuesByProperty(Guid id, ...) ... InkHoles

Schnittpunkte

Hit Testing ... durch Punkte: Strokes Ink.HitTest(Point p, float radius) ... durch Rechtecke: Strokes Ink.HitTest(Rectangle r, float percent) ... durch "Lasso": Strokes Ink.HitTest(Point[] pts, float percent) Strokes Ink.HitTest(Point[] pts, float percent, out Point[] arrLassoPts) nächste Punkte: Stroke Ink.NearestPoint(Point p, ...) float Stroke.NearestPoint(Point p, ...)

Ink serialisieren speichern: byte[] Ink.Save(PersistenceFormat f, CompressionMode c) f: Base64Gif, Base64InkSerializedFormat, Gif, InkSerializedFormat (ISF) c: Default, Maximum, NoCompression nur für ISF laden: void Ink.Load(byte[] inkData) Strokes-Collection speichern: Ink.CustomStrokes(String name, Strokes sks) Zusatzdaten speichern: ExtendedProperties (für Ink, Stroke) Id, Data Serialization

Ink ins Clipboard kopieren: IDataObject Ink.ClipboardCopy(...) einfügen: Strokes Ink.ClipboardPaste(...) testen: bool Ink.CanPaste(...)

Recognition API

Recognition API Recognizer RecognizerContext RecognitionResult repräsentiert eine Recognition Engine normalerweise sprachspezifisch RecognizerContext Unterstützung für den Recognizer bzgl. des zu erkennenden Inhalts RecognitionResult erkannter Text & mögliche Alternativen

Recognizer synchrone oder asynchrone Umwandlung von Ink in Text Input: Strokes-Collection eines Ink-Objekts Output: RecognitionResult mit möglichen Textwerten verschiedene Recognizer können verschiedene Sprachen oder Zwecke unterstützen nicht nur Text kann erkannt werden: Formen, Noten, etc. möglich Anwendungsgesten – Ink-basiert z.Zt. 8 Sprachen unterstützt US English, International English, Japanisch, Deutsch, Französisch, Simplified & Traditional Chinese, Koreanisch

Synchron vs Asynchron auch "Vordergrund" vs "Hintergrund" Erkennung im selben Thread wie die Anwendung? asynchron: bei zeitkritischen Anwendungen oder großen Mengen von Ink schwieriger zu programmieren Mittelweg: Teilerkennung ("partial recognition") Recognizer startet, sobald Ink verfügbar ist, korrigiert Ergebnis laufend meist in eigenem Thread

Zuverlässigkeit Texterkennung ist nicht einfach & selten eindeutig! Recognizer liefert nicht nur Textstring, sondern auch Aussagewahrscheinlichkeit ("confidence level") Alternativvorschläge zugehörige Strokes Anwendung sollte Korrektur-UI anbieten

Texterkennung für Einsteiger Ink.Strokes.ToString() nutzt Default Recognizer liefert wahrscheinlichstes Ergebnis synchrone Erkennung für komplettes Ink InkRecognition

Gesten erkennen 38 Application Gestures ScratchOut, Triangle, ArrowUp, ... CollectionMode.InkAndGesture / GestureOnly Ereignis: Gesture auswerten oder InkCollectorGestureEventArgs.Cancel=true  Stroke-Event feuert Methode SetGestureStatus legt fest, welche Gesten erkannt werden sollen alle erkennen: ApplicationGesture.AllGestures

Erkennung nichttrivial Recognizer-Objekt zur Steuerung der Texterkennung Eigenschaft Capabilities ArbitraryAngle, DownAndLeft etc. Collection Recognizers liefert verfügbare Recognizer GetDefaultRecognizer RecognizerContext für spezifische Texterkennung Modus: RecognitionFlags Input-Typ, Wortlisten etc.

RecognizerContext nutzen Objekt erstellen (Recognizer.CreateRecognizerContext()) evtl. Eigenschaften setzen Strokes übergeben evtl. EndInkInput() aufrufen erkennen: RecognizerContext.Recognize(out RecognitionStatus rs) liefert RecognitionResult-Objekt TopString-Eigenschaft gibt wahrscheinlichstes Ergebnis BackGroundRecognize() für asynchrone Erkennung

Alternativen nutzen RecognitionAlternate-Klasse liefert Infos zu Interpretationsmöglichkeiten RecognitionResult.TopAlternate für wahrscheinlichsten Treffer GetAlternatesFromSelection() für weitere Möglichkeiten RecoProposition

Text & Ink verbinden Resultate können mit dem Ink-Objekt gespeichert werden Eigenschaft Strokes.RecognitionResult kann über RecognitionResult.SetStrokesResult() gesetzt werden

Erkennung verbessern Eigenschaft Factoid des RecognizerContext-Objekts gibt Hinweis darauf, was erkannt werden soll: recoCtxt.Factoid="EMAIL|WEB" Factoids sind Strings DIGIT, DEFAULT, CURRENCY, DATE etc. Eigenschaft Wordlist enthält Sammlung von Strings, welche bevorzugt erkannt werden sollen: WordList wl=new WordList(); wl.Add("Gugelhupf"); recoCtxt.WordList=wl; RecognitionOption

Ink Controls

Überblick Steuerelemente für Windowsanwendungen InkEdit InkPicture ähnlich RichText-Controls, zusätzlich Ink Input & Texterkennung Versionen für .NET, ActiveX, Win32 InkPicture ähnlich InkCollector, InkOverlay Ink auf Bildern (JPG, BMP, PNG, GIF) Versionen für .NET & ActiveX

InkEdit Eigenschaften: Methoden: InkMode: InkAndGesture, Ink, Disabled Status: Idle, Collecting, Recognizing InkInsertMode: InsertAsText, InsertAsInk DrawingAttributes UseMouseForInput (bool) Cursor (Maus-Cursor!) Methoden: Ink[] SelInks() InkDisplayMode SelInksDisplayMode() Ink, Text InkEditDemo

Erkennung beeinflussen Recognizer-Eigenschaft für detaillierte Einstellungen Factoid-Eigenschaft verfügbar RecoTimeout: Wartezeit vor Umsetzung Erkennung manuell starten: Recognize() Gesture-Ereignis und SetGestureStatus() für Gestenerkennung Default: DownLeft[Long] (Return), UpRight[Long] (Tab), Right (Space), Left (Bkspc)

InkPicture Kombination aus InkOverlay und PictureBox InkEnabled statt (InkOverlay.)Enabled PaperForm

Neu in Version 1.5 PenInputPanel Divider frei programmierbarer Eingabebereich unterstützt TSF & Korrektur Divider Ink-Analyse, Trennung von Text & Grafik PIPSerialization

Designrichtlinien visuelle Kennzeichnung von Eingabebereichen DPI-Abhängigkeit Bildschirmorientierung (1024x768  768x1024) Modalität (Schreiben, Löschen, Zeigen, …) expliziter Wechsel & Zustandsanzeige Ergonomie Zielen: Bereiche <5mm schwer zu treffen Auswählen: Lasso-Tool Hovering: spezielle Version von COMCTL32.DLL

Designrichtlinien Parallaxe durch Bildschirmdicke & Lichtbrechung Kalibrierung Rechts-/Linkshänder (Menüs!) Performancefragen für natürlich wirkendes Schreiben

Agenda Tablet PC: Hardware & Software Tablet-Funktionalität Stifteingabe Digitale Tinte Schrifterkennung Entwickeln für den Tablet PC Das SDK im Überblick Managed Libraries Design-Richtlinien Zusammenfassung

Zusammenfassung Ink ist das grundlegende Objekt in stiftbasierten Anwendungen. Das SDK bietet umfangreiche & komfortable Möglichkeiten zur Manipulation von Ink, zur Analyse & Schrifterkennung. Für Standardaufgaben stehen Ink Controls zur Verfügung. Es bestehen besondere Anforderungen an das UI-Design.

Fragen!? Uff...

Buchempfehlung Rob Jarrett, Philip Su “Building Tablet PC Applications” Microsoft Press 2003 ISBN 0-7356-1723-6

Weiterführende Infos Tablet PC Platform SDK http://msdn.microsoft.com/downloads/default.asp?url= /downloads/sample.asp?url=/MSDN-FILES/027/002/015/msdncompositedoc.xml Tablet Developer Info @ Microsoft http://www.microsoft.com/windowsxp/tabletpc/ developers/default.asp Tablet PC Developer Community http://www.tabletpcdeveloper.com/

Slides & Demos http://www.frankpr.de/ Vielen Dank!