Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Tablet PC Edition Entwickeln für den Tablet PC Das Microsoft Tablet PC Platform SDK Frank Prengel, Technologieberater.NET Strategy & Developer Group Microsoft."—  Präsentation transkript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

17 Tablet PC Edition Schrifterkennung sekundär & nicht vollkommen! sekundär & nicht vollkommen! Texteingabe

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

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

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

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

22 Tablet PC Edition Tablet PC Platform

23 Tablet PC Edition Das SDK im Überblick

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

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

26 Tablet PC Edition Pen API

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

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

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

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

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

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

33 Tablet PC Edition Packets anschaulich PacketPropWatcher

34 Tablet PC Edition Ink API

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

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

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

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

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

40 Tablet PC Edition Ink rendern (2) InkCollector & InkOverlay haben Renderer- Eigenschaft 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) 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 Umwandlung HIMETRIC Pixel: InkSpaceToPixel, PixelToInkSpace

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

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

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

44 Tablet PC Edition Schnittpunkte

45 Hit Testing... durch Punkte: Strokes Ink.HitTest(Point p, float radius)... durch Punkte: Strokes Ink.HitTest(Point p, float radius)... durch Rechtecke: Strokes Ink.HitTest(Rectangle r, float percent)... 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)... 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,...) nächste Punkte: Stroke Ink.NearestPoint(Point p,...) float Stroke.NearestPoint(Point p,...)

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

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

48 Tablet PC Edition Recognition API

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

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

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

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

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

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

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

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

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

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

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

60 Tablet PC Edition Ink Controls

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

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

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

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

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

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

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

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

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

70 Tablet PC Edition Fragen!? Uff...

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

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

73 Tablet PC Edition Slides & Demos Vielen Dank!

74 Tablet PC Edition


Herunterladen ppt "Tablet PC Edition Entwickeln für den Tablet PC Das Microsoft Tablet PC Platform SDK Frank Prengel, Technologieberater.NET Strategy & Developer Group Microsoft."

Ähnliche Präsentationen


Google-Anzeigen