Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Entwickeln für den Tablet PC Das Microsoft Tablet PC Platform SDK"—  Präsentation transkript:

1 Entwickeln für den Tablet PC Das Microsoft Tablet PC Platform SDK
Frank Prengel, Technologieberater .NET Strategy & Developer Group Microsoft Deutschland GmbH

2 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

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

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

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

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

7 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

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

9 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, ...

10 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

11 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

12 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

13 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

14 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

15 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

16 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.

17 Schrifterkennung sekundär & nicht vollkommen! Texteingabe

18 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

19 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!

20 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.)

21 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

22 Tablet PC Platform

23 Das SDK im Überblick

24 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

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

26 Pen API

27 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

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

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

30 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

31 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

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

33 Packets anschaulich PacketPropWatcher

34 Ink API

35 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

36 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

37 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

38 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

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

40 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

41 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

42 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

43 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

44 Schnittpunkte

45 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, ...)

46 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

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

48 Recognition API

49 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

50 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

51 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

52 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

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

54 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

55 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.

56 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

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

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

59 Erkennung verbessern Eigenschaft Factoid des RecognizerContext-Objekts gibt Hinweis darauf, was erkannt werden soll: recoCtxt.Factoid=" |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

60 Ink Controls

61 Ü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

62 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

63 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)

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

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

66 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

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

68 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

69 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.

70 Fragen!? Uff...

71 Buchempfehlung Rob Jarrett, Philip Su “Building Tablet PC Applications” Microsoft Press 2003 ISBN

72 Weiterführende Infos Tablet PC Platform SDK /downloads/sample.asp?url=/MSDN-FILES/027/002/015/msdncompositedoc.xml Tablet Developer Microsoft developers/default.asp Tablet PC Developer Community

73 Slides & Demos Vielen Dank!

74


Herunterladen ppt "Entwickeln für den Tablet PC Das Microsoft Tablet PC Platform SDK"

Ähnliche Präsentationen


Google-Anzeigen