Upload
marlene-schneier
View
115
Download
3
Embed Size (px)
Citation preview
Tablet PC Edition
Entwickeln für den Tablet Entwickeln für den Tablet PCPCDas Microsoft Tablet PC Platform SDKDas Microsoft Tablet PC Platform SDK
Frank PrengelFrank Prengel, <, <[email protected]@microsoft.com>>TechnologieberaterTechnologieberater.NET Strategy & Developer Group.NET Strategy & Developer GroupMicrosoft Deutschland GmbHMicrosoft Deutschland GmbH
Tablet PC Edition
AgendaAgenda
• Tablet PC: Hardware & SoftwareTablet PC: Hardware & Software
• Tablet-FunktionalitätTablet-Funktionalität• StifteingabeStifteingabe• Digitale TinteDigitale Tinte• SchrifterkennungSchrifterkennung
• Entwickeln für den Tablet PCEntwickeln für den Tablet PC• Das SDK im ÜberblickDas SDK im Überblick• Managed LibrariesManaged Libraries• Design-RichtlinienDesign-Richtlinien
• ZusammenfassungZusammenfassung
Tablet PC Edition
... und ganz wichtig:... und ganz wichtig:
• Input erbeten!Input erbeten!• Ihre IdeenIhre Ideen• Ihre MeinungenIhre Meinungen• Ihre VorstellungenIhre Vorstellungen• Ihre WünscheIhre Wünsche• Ihre KritikIhre Kritik
Tablet PC Edition
Back to the FutureBack to the Future
• Der Tablet PC hat viele Vorgänger ...Der Tablet PC hat viele Vorgänger ...
Tablet PC Edition
Was Was haben wir gelernt? wir gelernt?
You can´t railroad before it´s railroading
time.
Robert Heinlein
Tablet PC Edition
2002 – der Tablet PC2002 – der Tablet PC
• Die gewohnte PC-Infrastruktur: Windows XPDie gewohnte PC-Infrastruktur: Windows XP
• Die Mobilität eines Sub-NotebooksDie Mobilität eines Sub-Notebooks
• Die Flexibilität von Stift + PapierDie Flexibilität von Stift + Papier
Tablet PC Edition
AgendaAgenda
• Tablet PC: Hardware & SoftwareTablet PC: Hardware & Software
• Tablet-FunktionalitätTablet-Funktionalität• StifteingabeStifteingabe• Digitale TinteDigitale Tinte• SchrifterkennungSchrifterkennung
• Entwickeln für den Tablet PCEntwickeln für den Tablet PC• Das SDK im ÜberblickDas SDK im Überblick• Managed LibrariesManaged Libraries• Design-RichtlinienDesign-Richtlinien
• ZusammenfassungZusammenfassung
Tablet PC Edition
Hardware (1/2)Hardware (1/2)
• Elektromagnetischer DigitizerElektromagnetischer Digitizer
•unterunter dem LCD dem LCD•kabelloser Stiftkabelloser Stift•erkennt "hovering"erkennt "hovering"•kann Neigung & kann Neigung & Rotation erkennenRotation erkennen•Abtastrate > 100 HzAbtastrate > 100 Hz•Auflösung > 600 dpiAuflösung > 600 dpi
Tablet PC Edition
Hardware (2/2)Hardware (2/2)
• Tablet-ButtonsTablet-Buttons• Ersatz für CTRL+ALT+DELErsatz für CTRL+ALT+DEL• UP, DOWN, ENTER, ESCAPEUP, DOWN, ENTER, ESCAPE
• "Grab and go""Grab and go"• zuverlässiges Hotpluggingzuverlässiges Hotplugging
• Landscape- und Portrait-Darstellung ohne Landscape- und Portrait-Darstellung ohne RebootReboot
• "Aufwachen" aus dem Stand-By-Modus < "Aufwachen" aus dem Stand-By-Modus < 3 Sek.3 Sek.
• Legacy-freeLegacy-free• kein PS/2, RS232, LPT, ...kein PS/2, RS232, LPT, ...• USB, Firewire; evtl. (W)LAN, Bluetooth, ...USB, Firewire; evtl. (W)LAN, Bluetooth, ...
Tablet PC Edition
Software (1/2)Software (1/2)
• Betriebssystem:Betriebssystem:• Microsoft Windows XP ProfessionalMicrosoft Windows XP Professional• Windows XP Service Pack 1Windows XP Service Pack 1• .NET Framework 1.0 SP2.NET Framework 1.0 SP2• Tablet PC ComponentsTablet PC Components
Windows XP Professional Service
Pack 1
Tablet PCCompo-nents
Tablet PC Edition
Software (2/2)Software (2/2)
• Tablet-spezifische Software:Tablet-spezifische Software:• StifteingabeStifteingabe• Ink-SteuerelementeInk-Steuerelemente• Gesten-, Schrift- und Gesten-, Schrift- und
SpracherkennungSpracherkennung• Input PanelInput Panel• Windows JournalWindows Journal• Sticky NotesSticky Notes• Ink BallInk 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
Tablet PC Edition
AgendaAgenda
• Tablet PC: Hardware & SoftwareTablet PC: Hardware & Software
• Tablet-FunktionalitätTablet-Funktionalität• StifteingabeStifteingabe• Digitale TinteDigitale Tinte• SchrifterkennungSchrifterkennung
• Entwickeln für den Tablet PCEntwickeln für den Tablet PC• Das SDK im ÜberblickDas SDK im Überblick• Managed LibrariesManaged Libraries• Design-RichtlinienDesign-Richtlinien
• ZusammenfassungZusammenfassung
Tablet PC Edition
ArchitekturArchitektur
• ... im Überblick:... im Überblick:
Gestures Ink Recognition
Kernel Mode
User Mode
API / Run-Time Interfaces
Recognizers Microsoft (US, JPN, etc.)
Gestures, Shapes OthersMouse
DriverHID
HID MiniDriver
CustomDriver
• Interaktion mit Hardware nur über Interaktion mit Hardware nur über Gesture-KomponentenGesture-Komponenten
Tablet PC Edition
Tablet Input SubsystemTablet Input Subsystem
• Anwendungen erhalten Pen-Input-Daten Anwendungen erhalten Pen-Input-Daten durch Shared Memory Queue (durch Shared Memory Queue (nichtnicht durch durch Windows Messages)Windows Messages)
HID InputDevice
HID InputDevice
* WISP = Windows Ink Services for Pen
Tablet PC Edition
GestenGesten
• System GesturesSystem Gestures• Hover, Tap, Double-Tap, Tap-and-Hold, etc.Hover, Tap, Double-Tap, Tap-and-Hold, etc.• emulieren Mausaktionenemulieren Mausaktionen
• Application GesturesApplication Gestures• Backspace, Enter, Backspace, Enter,
Scratch-out, etc.Scratch-out, etc.• Shortcuts fürShortcuts für
bestimmte Aktionenbestimmte Aktionen
Tablet PC Edition
InkInk
• "digitale Tinte" – so natürlich wie möglich"digitale Tinte" – so natürlich wie möglich• Echtzeitrendern, Bezièrkurven, Anti-AliasingEchtzeitrendern, Bezièrkurven, Anti-Aliasing• Drucksensitivität, Stiftformen, subtraktives Drucksensitivität, Stiftformen, subtraktives
FarbmischenFarbmischen
• für handschriftliche Eingabefür handschriftliche Eingabe
• für visuelles Feedback & Anmerkungenfür visuelles Feedback & Anmerkungen
Ein erster Test.
Tablet PC Edition
SchrifterkennungSchrifterkennung
• sekundär & nicht vollkommen!sekundär & nicht vollkommen!
Texteingabe
Tablet PC Edition
AgendaAgenda
• Tablet PC: Hardware & SoftwareTablet PC: Hardware & Software
• Tablet-FunktionalitätTablet-Funktionalität• StifteingabeStifteingabe• Digitale TinteDigitale Tinte• SchrifterkennungSchrifterkennung
• Entwickeln für den Tablet PCEntwickeln für den Tablet PC• Das SDK im ÜberblickDas SDK im Überblick• Managed LibrariesManaged Libraries• Design-RichtlinienDesign-Richtlinien
• ZusammenfassungZusammenfassung
Tablet PC Edition
Entwickeln für den Tablet Entwickeln für den Tablet PCPC• "Think in Ink""Think in Ink"
• Ink als eigenständiger DatentypInk als eigenständiger Datentyp• kann als solcher gespeichert & verarbeitet werdenkann als solcher gespeichert & verarbeitet werden
• Schrifterkennung ist kein vollwertiger Schrifterkennung ist kein vollwertiger Tastatur-ErsatzTastatur-Ersatz
• besondere Anforderungen an das User besondere Anforderungen an das User InterfaceInterface• vereinfachte & natürliche Dateneingabevereinfachte & natürliche Dateneingabe• Größe der ControlsGröße der Controls
• Entdecke die Möglichkeiten!Entdecke die Möglichkeiten!
Tablet PC Edition
Das Tablet PC Platform Das Tablet PC Platform SDKSDK• aktuelle Version: aktuelle Version: 1.51.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 EditionWindows XP Tablet PC Edition
• unterstützte Tools:unterstützte Tools:• Visual Studio 6.0 SP5Visual Studio 6.0 SP5• Visual Studio .NETVisual Studio .NET• Visual Studio .NET 2003Visual Studio .NET 2003
(* Keine Schrifterkennung. Ohne SDK keine Ink Collection.)(* Keine Schrifterkennung. Ohne SDK keine Ink Collection.)
Tablet PC Edition
Das Tablet PC Platform Das Tablet PC Platform SDKSDK• Managed (= .NET) APIs Managed (= .NET) APIs
• für Stift & Inkfür Stift & Ink
• COM Automation APIs (C/C++, VB6) COM Automation APIs (C/C++, VB6) • für Stift & Inkfür Stift & Ink
• Ink ControlsInk Controls• InkEdit, InkPictureInkEdit, InkPicture
• DokumentationDokumentation
• BeispielanwendungenBeispielanwendungen
• LaufzeitbibliothekenLaufzeitbibliotheken• für die Verwendung des SDK auf Nicht-Tablet-für die Verwendung des SDK auf Nicht-Tablet-
PCsPCs
Tablet PC Edition
Tablet PC PlatformTablet PC Platform
CO
M A
PI
Core services
C#
VB.NET
C++
VB
PenInputPanel objectInkDivider object
InkEdit controlInkPicture control
Ink services
Pen services
Recognition services
Man
aged
AP
I
Microsoft handwriting recognizers
Gesture recognizersShape recognizers
Custom recognizers
- US/Int. English- Japanese- Chinese T/S
- Korean- German- French
Tablet PC Edition
Das SDK im ÜberblickDas SDK im Überblick
Tablet PC Edition
Managed APIsManaged APIs
• Tablet Input API (Pen API)Tablet Input API (Pen API)• Ink & Gestures sammelnInk & Gestures sammeln• Pen Buttons abfragenPen Buttons abfragen
• Ink Data Management API (Ink API)Ink Data Management API (Ink API)• Ink speichern & bearbeitenInk speichern & bearbeiten
• Ink Recognition API (Recognition API)Ink Recognition API (Recognition API)• InkInk
inter-inter-pre-pre-tierentieren
Tablet PC Edition
ObjektmodellObjektmodellInkCollector InkOverlay
Ink
Strokes
Renderer
Tablet
Stroke
Recognizers
Recognizer
DrawingAttributes
RecognizerContext
Pen API
Ink API
Reco API
Tablet PC Edition
Pen APIPen API
Tablet PC Edition
Pen API - ÜberblickPen API - Überblick
• Tablet & TabletsTablet & Tablets• Info über verfügbare Digitizer & Input DevicesInfo über verfügbare Digitizer & Input Devices
• Cursor & CursorsCursor & Cursors• Info über verfügbare (abstrakte) StiftspitzenInfo über verfügbare (abstrakte) Stiftspitzen
• InkCollector & InkOverlayInkCollector & InkOverlay• Ink aufnehmen & anzeigenInk aufnehmen & anzeigen• Events zu Gesten, Buttons & TipsEvents zu Gesten, Buttons & Tips• InkOverlay: Auswahl & Löschen zusätzlichInkOverlay: Auswahl & Löschen zusätzlich
Tablet PC Edition
TabletsTablets
• Information über vorhandene DigitizerInformation über vorhandene Digitizer• Tip PressureTip Pressure• Winkel zwischen Tablet & StiftWinkel zwischen Tablet & Stift• StiftrotationStiftrotation• AuflösungAuflösung• Hovering & Abstand Stift-TabletHovering & Abstand Stift-Tablet• Cursor-IDCursor-ID• Tablet PnP-IDTablet PnP-ID
Tablet PC Edition
Die Klasse Die Klasse TabletTablet
• wichtige Eigenschaften:wichtige Eigenschaften:• HardwareCapabilitiesHardwareCapabilities
• CursorMustTouch, CursorsHavePhysicalIds, CursorMustTouch, CursorsHavePhysicalIds, HardProximity, IntegratedHardProximity, Integrated
• MaximumInputRectangleMaximumInputRectangle• NameName• PlugAndPlayIdPlugAndPlayId
• wichtige Methoden:wichtige Methoden:• IsPacketPropertySupported(System.Guid)IsPacketPropertySupported(System.Guid)• GetPropertyMetrics(System.Guid)GetPropertyMetrics(System.Guid)
DeviceWalker
Tablet PC Edition
InkCollectorInkCollector
• Echtzeit-Ink-Input für AnwendungenEchtzeit-Ink-Input für Anwendungen
• "Ink Canvas": Region für Input"Ink Canvas": Region für Input• einfach einschalten:einfach einschalten:
InkCollector ic = new InkCollector(Handle);InkCollector ic = new InkCollector(Handle);ic.Enabled = true;ic.Enabled = true;
• diverse Eventsdiverse Events• StrokeStroke, , GestureGesture• Pen Movement: Pen Movement: CursorInRangeCursorInRange, ,
CursorButtonDown,CursorButtonDown, NewPacketsNewPackets etc. etc.• Mouse Trigger Events: Mouse Trigger Events: DoubleClickDoubleClick etc. etc.• Tablet Hardware Events: Tablet Hardware Events: TabletAddedTabletAdded, ,
TabletRemovedTabletRemovedInkCollector InputWatcher
Tablet PC Edition
InkOverlayInkOverlay
• enthält InkCollectorenthält InkCollector
• ermöglicht zusätzlich Bearbeiten & ermöglicht zusätzlich Bearbeiten & Löschen:Löschen:InkOverlayEditingModeInkOverlayEditingMode• InkInk• Select: Lasso-Modus für Auswahl, Resizing etc.Select: Lasso-Modus für Auswahl, Resizing etc.• Delete: Löschmodus Delete: Löschmodus EraserModeEraserMode
• StrokeEraseStrokeErase• PointErase ( -> EraserWidth (in 1/100 mm) )PointErase ( -> EraserWidth (in 1/100 mm) )
• zusätzliche Events:zusätzliche Events:• Rendering: Rendering: Painting, PaintedPainting, Painted• Editing: Editing: SelectionChanging, StrokesDeletedSelectionChanging, StrokesDeleted
etc.etc.HelloInkOverlay
Tablet PC Edition
PacketsPackets
• Datenblöcke mit Ink-InformationDatenblöcke mit Ink-Information
• können enthalten (können enthalten (PacketPropertyPacketProperty):):• XX, , YY, , PacketStatusPacketStatus , NormalPressure, , NormalPressure,
RollRotation etc.RollRotation etc.• HW- & treiberabhängig!HW- & treiberabhängig!
• Anwendung kann angeben, welche Daten Anwendung kann angeben, welche Daten sie verwenden möchte:sie verwenden möchte:
ic.DesiredPacketDescription = new Guid[] {ic.DesiredPacketDescription = new Guid[] {PacketProperty.X, PacketProperty.Y };PacketProperty.X, PacketProperty.Y };
Tablet PC Edition
Packets anschaulichPackets anschaulich
PacketPropWatcher
Tablet PC Edition
Ink APIInk API
Tablet PC Edition
Ink APIInk API
• Ink, Stroke & StrokesInk, Stroke & Strokes• Ink-Datenstruktur & einzelne LinienzügeInk-Datenstruktur & einzelne Linienzüge• Laden & Speichern aus Streams & Clipboard Laden & Speichern aus Streams & Clipboard
möglichmöglich
• DrawingAttributesDrawingAttributes• optisches Erscheinungsbild der Linienzüge, optisches Erscheinungsbild der Linienzüge,
wie z.B. Farbe, Transparenz, Linienstärke, wie z.B. Farbe, Transparenz, Linienstärke, AntialiasingAntialiasing
Tablet PC Edition
InkInk
• verwaltet, manipuliert & speichert Input verwaltet, manipuliert & speichert Input von InkCollector & InkOverlayvon InkCollector & InkOverlay
• enthält Strokes und enthält Strokes und StrokesStrokes-Collection-Collection
• unterstützt "hit detection"unterstützt "hit detection"
• Koordinatensystem: HIMETRIC Koordinatensystem: HIMETRIC (Einheit: 0.01mm)(Einheit: 0.01mm)
• Events: Events: InkAdded, InkDeletedInkAdded, InkDeleted
Tablet PC Edition
StrokeStroke
• StrokeStroke: Datensatz, aufgenommen : Datensatz, aufgenommen während einer Sequenzwährend einer Sequenz Pen Down Pen Down Pen Move Pen Move Pen Up Pen Up
• Sammlung von PacketsSammlung von Packets
• besitzt eindeutige ID (int) im Ink-Objektbesitzt eindeutige ID (int) im Ink-Objekt• AchtungAchtung: Jede Stiftaktion erzeugt einen : Jede Stiftaktion erzeugt einen
Stroke! Stroke! Nicht jeder Stroke ist sichtbar! Nicht jeder Stroke ist sichtbar!
• besitzt Eigenschaft besitzt Eigenschaft Deleted Deleted ((!!))
• Manipulation über das Ink-Objekt:Manipulation über das Ink-Objekt:AddStrokesAtRectangle, AddStrokesAtRectangle, CreateStroke(Point[] pts), DeleteStroke, CreateStroke(Point[] pts), DeleteStroke, DeleteStrokes, ExtractStrokes DeleteStrokes, ExtractStrokes etc.etc.StrokeIdViewer
Tablet PC Edition
StrokesStrokes
• StrokesStrokes –Collection gehört zu Ink-Objekt –Collection gehört zu Ink-Objekt• read-only; enthält Verweise auf Stroke-read-only; enthält Verweise auf Stroke-
Objekte; Objekte; kein Ownership kein Ownership
• Bsp.: InkOverlay.SelectionBsp.: InkOverlay.Selection
• erzeugen:erzeugen:
Strokes CreateStrokes();Strokes CreateStrokes();Strokes CreateStrokes(int[] ids);Strokes CreateStrokes(int[] ids);
• Methoden: Methoden: Add, Clear, Remove, ContainsAdd, Clear, Remove, Contains etc.etc.
• Events: Events: StrokesAddedStrokesAdded, , StrokesDeletedStrokesDeleted
Tablet PC Edition
Ink rendern (1)Ink rendern (1)
• Klasse Klasse RendererRenderer kann Ink-Daten in kann Ink-Daten in grafischen Output "übersetzen"grafischen Output "übersetzen"• unterstützt Zoom, Größenänderungen, unterstützt Zoom, Größenänderungen,
Scrollen, RotationScrollen, Rotation
Tablet PC Edition
Ink rendern (2)Ink rendern (2)
• InkCollector & InkOverlay haben InkCollector & InkOverlay haben RendererRenderer--EigenschaftEigenschaft
• DrawDraw-Methode kann auf -Methode kann auf GraphicsGraphics-Objekt -Objekt oder Device Context zeichnen:oder Device Context zeichnen:void Draw(Graphics g, Stroke s) void Draw(Graphics g, Stroke s) void Draw(Graphics g, Stroke s, DrawingAttributes da) void Draw(Graphics g, Stroke s, DrawingAttributes da) void Draw(Graphics g, Strokes strokes) void Draw(Graphics g, Strokes strokes) void Draw(IntPtr hdc, Stroke s) void Draw(IntPtr hdc, Stroke s) void Draw(IntPtr hdc, Stroke s, DrawingAttributes da) void Draw(IntPtr hdc, Stroke s, DrawingAttributes da) void Draw(IntPtr hdc, Strokes strokes) void Draw(IntPtr hdc, Strokes strokes)
• Umwandlung HIMETRIC Umwandlung HIMETRIC Pixel: Pixel: InkSpaceToPixel, PixelToInkSpaceInkSpaceToPixel, PixelToInkSpace
Tablet PC Edition
TransformationenTransformationen
• Verschieben: Verschieben: Move(float dx, dy)Move(float dx, dy)
• Drehen: Drehen: Rotate(float deg [, Point pt])Rotate(float deg [, Point pt])
• Skalieren: Skalieren: Scale(float fx, fy [, bool Scale(float fx, fy [, bool scaleWidth])scaleWidth])
• Transformieren:Transformieren:GetObjectTransform(ref Matrix m)GetObjectTransform(ref Matrix m)GetViewTransform(ref Matrix m)GetViewTransform(ref Matrix m)SetObjectTransform(Matrix m)SetObjectTransform(Matrix m)SetViewTransform(Matrix m)SetViewTransform(Matrix m)
Art der Art der TransformationTransformation
Linienstärke skaliert?Linienstärke skaliert?
objectobject neinneinviewview jaja
InkMagnify
Tablet PC Edition
DrawingAttributesDrawingAttributes
• Formatierungsinfos für die Darstellung Formatierungsinfos für die Darstellung von Ink:von Ink:• bool bool AntiAliasedAntiAliased• Color Color ColorColor• bool bool FitToCurveFitToCurve: Gerade oder Bézier?: Gerade oder Bézier?• float float HeightHeight: für rechteckige Stiftspitze: für rechteckige Stiftspitze• bool bool IgnorePressureIgnorePressure• PenTip PenTip PenTipPenTip: Ball, Rectangle: Ball, Rectangle• RasterOperation RasterOperation RasterOperationRasterOperation: CopyPen : CopyPen
(normaler Stift), MaskPen (Text Marker) etc.(normaler Stift), MaskPen (Text Marker) etc.• byte byte TransparencyTransparency: 0=undurchsichtig, : 0=undurchsichtig,
255=unsichtbar255=unsichtbar• float float WidthWidth: in HIMETRIC-Einheiten: in HIMETRIC-Einheiten
InkFormatter
Tablet PC Edition
Strokes für Strokes für FortgeschritteneFortgeschrittene• Punkte eines Linienzugs bearbeiten:Punkte eines Linienzugs bearbeiten:
Point[] Stroke.Point[] Stroke.GetPointsGetPoints(...)(...)int Stroke.int Stroke.SetPointsSetPoints(...)(...)Point[] Point[] Stroke.Stroke.GetFlattenedBezierPointsGetFlattenedBezierPoints(...)(...)......
• Schnittpunkte:Schnittpunkte:float[] float[] SelfIntersectionsSelfIntersectionsfloat[] float[] FindIntersectionsFindIntersections(Strokes sks)(Strokes sks)StrokeIntersection[] StrokeIntersection[] GetRectangleIntersectionsGetRectangleIntersections
• Packets:Packets:int[] int[] GetPacketDataGetPacketData(...)(...)int[] int[] GetPacketValuesByPropertyGetPacketValuesByProperty(Guid (Guid id, ...)id, ...)......
InkHoles
Tablet PC Edition
SchnittpunkteSchnittpunkte
Tablet PC Edition
Hit TestingHit Testing
• ... durch Punkte:... durch Punkte:Strokes Ink.HitTest(Point p, float radius)Strokes Ink.HitTest(Point p, float radius)
• ... durch Rechtecke:... durch Rechtecke:Strokes Ink.HitTest(Rectangle r, float percent)Strokes Ink.HitTest(Rectangle r, float percent)
• ... durch "Lasso":... durch "Lasso":Strokes Ink.HitTest(Point[] pts, float percent)Strokes Ink.HitTest(Point[] pts, float percent)Strokes Ink.HitTest(Point[] pts, float percent, Strokes Ink.HitTest(Point[] pts, float percent, out Point[] arrLassoPts)out Point[] arrLassoPts)
• nächste Punkte:nächste Punkte:Stroke Ink.NearestPoint(Point p, ...)Stroke Ink.NearestPoint(Point p, ...)float Stroke.NearestPoint(Point p, ...)float Stroke.NearestPoint(Point p, ...)
Tablet PC Edition
Ink serialisierenInk serialisieren• speichern:speichern:
byte[] Ink.Save(PersistenceFormat f, byte[] Ink.Save(PersistenceFormat f, CompressionMode c)CompressionMode c)
• f: f: Base64Gif, Base64InkSerializedFormat, Gif, Base64Gif, Base64InkSerializedFormat, Gif, InkSerializedFormatInkSerializedFormat (ISF) (ISF)
• c: c: Default, Maximum, NoCompressionDefault, Maximum, NoCompression• nur für ISFnur für ISF
• laden:laden:void Ink.Load(byte[] inkData)void Ink.Load(byte[] inkData)
• Strokes-Collection speichern:Strokes-Collection speichern:Ink.CustomStrokes(String name, Strokes sks)Ink.CustomStrokes(String name, Strokes sks)
• Zusatzdaten speichern:Zusatzdaten speichern:ExtendedPropertiesExtendedProperties (für Ink, Stroke) (für Ink, Stroke)• Id, DataId, Data
Serialization
Tablet PC Edition
Ink ins ClipboardInk ins Clipboard
• kopieren:kopieren:IDataObject Ink.IDataObject Ink.ClipboardCopyClipboardCopy(...)(...)
• einfügen:einfügen:Strokes Ink.Strokes Ink.ClipboardPasteClipboardPaste(...)(...)
• testen:testen:bool Ink.bool Ink.CanPasteCanPaste(...)(...)
Tablet PC Edition
Recognition Recognition APIAPI
Tablet PC Edition
Recognition APIRecognition API
• RecognizerRecognizer• repräsentiert eine Recognition Enginerepräsentiert eine Recognition Engine• normalerweise sprachspezifischnormalerweise sprachspezifisch
• RecognizerContextRecognizerContext• Unterstützung für den Recognizer bzgl. des zu Unterstützung für den Recognizer bzgl. des zu
erkennenden Inhaltserkennenden Inhalts
• RecognitionResultRecognitionResult• erkannter Text & mögliche Alternativenerkannter Text & mögliche Alternativen
Tablet PC Edition
RecognizerRecognizer• synchrone oder asynchrone Umwandlung synchrone oder asynchrone Umwandlung
von Ink in Textvon Ink in Text• Input: Input: StrokesStrokes-Collection eines Ink-Objekts-Collection eines Ink-Objekts• Output: Output: RecognitionResultRecognitionResult mit möglichen mit möglichen
TextwertenTextwerten
• verschiedene Recognizer können verschiedene Recognizer können verschiedene Sprachen oder Zwecke verschiedene Sprachen oder Zwecke unterstützenunterstützen• nicht nur Text kann erkannt werden: Formen, nicht nur Text kann erkannt werden: Formen,
Noten, etc. möglichNoten, etc. möglich• Anwendungsgesten – Ink-basiertAnwendungsgesten – Ink-basiert
• z.Zt. 8 Sprachen unterstütztz.Zt. 8 Sprachen unterstützt• US English, International English, Japanisch, US English, International English, Japanisch,
Deutsch, Französisch, Simplified & Traditional Deutsch, Französisch, Simplified & Traditional Chinese, KoreanischChinese, Koreanisch
Tablet PC Edition
Synchron vs AsynchronSynchron vs Asynchron
• auch "Vordergrund" vs "Hintergrund"auch "Vordergrund" vs "Hintergrund"
• Erkennung im selben Thread wie die Erkennung im selben Thread wie die Anwendung?Anwendung?• asynchron: bei zeitkritischen Anwendungen asynchron: bei zeitkritischen Anwendungen
oder großen Mengen von Inkoder großen Mengen von Ink• schwieriger zu programmierenschwieriger zu programmieren
• Mittelweg: Teilerkennung ("partial Mittelweg: Teilerkennung ("partial recognition")recognition")• Recognizer startet, sobald Ink verfügbar ist, Recognizer startet, sobald Ink verfügbar ist,
korrigiert Ergebnis laufendkorrigiert Ergebnis laufend• meist in eigenem Threadmeist in eigenem Thread
Tablet PC Edition
ZuverlässigkeitZuverlässigkeit
• Texterkennung ist nicht einfach & selten Texterkennung ist nicht einfach & selten eindeutig!eindeutig!
• Recognizer liefert nicht nur Textstring, Recognizer liefert nicht nur Textstring, sondern auchsondern auch• Aussagewahrscheinlichkeit ("confidence Aussagewahrscheinlichkeit ("confidence
level")level")• AlternativvorschlägeAlternativvorschläge• zugehörige Strokeszugehörige Strokes
• Anwendung sollte Korrektur-UI anbietenAnwendung sollte Korrektur-UI anbieten
Tablet PC Edition
Texterkennung für Texterkennung für EinsteigerEinsteiger
Ink.Strokes.ToString()Ink.Strokes.ToString()
• nutzt Default Recognizernutzt Default Recognizer
• liefert wahrscheinlichstes Ergebnisliefert wahrscheinlichstes Ergebnis
• synchrone Erkennung für komplettes Inksynchrone Erkennung für komplettes Ink
InkRecognition
Tablet PC Edition
Gesten erkennenGesten erkennen
• 38 Application Gestures38 Application Gestures• ScratchOut, Triangle, ArrowUp, ...ScratchOut, Triangle, ArrowUp, ...
• CollectionMode.CollectionMode.InkAndGestureInkAndGesture / / GestureOnlyGestureOnly
• Ereignis: Ereignis: GestureGesture• auswerten oderauswerten oder• InkCollectorGestureEventArgs.Cancel=trueInkCollectorGestureEventArgs.Cancel=true
StrokeStroke-Event feuert-Event feuert
• Methode Methode SetGestureStatusSetGestureStatus legt fest, legt fest, welche Gesten erkannt werden sollenwelche Gesten erkannt werden sollen• alle erkennen: alle erkennen: ApplicationGesture.AllGesturesApplicationGesture.AllGestures
Tablet PC Edition
Erkennung nichttrivialErkennung nichttrivial
• RecognizerRecognizer-Objekt zur Steuerung der -Objekt zur Steuerung der TexterkennungTexterkennung• Eigenschaft Eigenschaft CapabilitiesCapabilities
• ArbitraryAngle, DownAndLeft etc.ArbitraryAngle, DownAndLeft etc.
• Collection Collection RecognizersRecognizers liefert verfügbare liefert verfügbare RecognizerRecognizer• GetDefaultRecognizerGetDefaultRecognizer
• RecognizerContextRecognizerContext für spezifische für spezifische TexterkennungTexterkennung• Modus: Modus: RecognitionFlagsRecognitionFlags• Input-Typ, Wortlisten etc.Input-Typ, Wortlisten etc.
Tablet PC Edition
RecognizerContext RecognizerContext nutzennutzen• Objekt erstellen Objekt erstellen
((Recognizer.CreateRecognizerContext()Recognizer.CreateRecognizerContext()))
• evtl. Eigenschaften setzenevtl. Eigenschaften setzen
• Strokes übergebenStrokes übergeben
• evtl. evtl. EndInkInput()EndInkInput() aufrufen aufrufen• erkennen:erkennen:
RecognizerContext.Recognize(out RecognizerContext.Recognize(out RecognitionStatus rs)RecognitionStatus rs)• liefert liefert RecognitionResultRecognitionResult-Objekt-Objekt
• TopStringTopString-Eigenschaft gibt wahrscheinlichstes -Eigenschaft gibt wahrscheinlichstes ErgebnisErgebnis
• BackGroundRecognize()BackGroundRecognize() für asynchrone für asynchrone ErkennungErkennung
Tablet PC Edition
Alternativen nutzenAlternativen nutzen
• RecognitionAlternateRecognitionAlternate-Klasse liefert Infos -Klasse liefert Infos zu Interpretationsmöglichkeitenzu Interpretationsmöglichkeiten
• RecognitionResult.TopAlternateRecognitionResult.TopAlternate für für wahrscheinlichsten Trefferwahrscheinlichsten Treffer
• GetAlternatesFromSelection()GetAlternatesFromSelection() für weitere für weitere MöglichkeitenMöglichkeiten
RecoProposition
Tablet PC Edition
Text & Ink verbindenText & Ink verbinden
• Resultate können mit dem Ink-Objekt Resultate können mit dem Ink-Objekt gespeichert werdengespeichert werden
• Eigenschaft Eigenschaft Strokes.RecognitionResultStrokes.RecognitionResult kann überkann über
RecognitionResult.SetStrokesResult()RecognitionResult.SetStrokesResult()
gesetzt werdengesetzt werden
Tablet PC Edition
Erkennung verbessernErkennung verbessern
• Eigenschaft Eigenschaft FactoidFactoid des des RecognizerContextRecognizerContext-Objekts gibt Hinweis -Objekts gibt Hinweis darauf, darauf, waswas erkannt werden soll: erkannt werden soll:recoCtxt.Factoid="EMAIL|WEB"recoCtxt.Factoid="EMAIL|WEB"
• Factoids sind StringsFactoids sind Strings• DIGIT, DEFAULT, CURRENCY, DATE etc.DIGIT, DEFAULT, CURRENCY, DATE etc.
• Eigenschaft Eigenschaft WordlistWordlist enthält Sammlung enthält Sammlung von Strings, welche bevorzugt erkannt von Strings, welche bevorzugt erkannt werden sollen:werden sollen:
WordList wl=new WordList();WordList wl=new WordList();wl.Add("Gugelhupf");wl.Add("Gugelhupf");recoCtxt.WordList=wl;recoCtxt.WordList=wl;
RecognitionOption
Tablet PC Edition
Ink Ink ControlsControls
Tablet PC Edition
ÜberblickÜberblick
• Steuerelemente für Steuerelemente für WindowsanwendungenWindowsanwendungen
• InkEditInkEdit• ähnlich RichText-Controls, zusätzlich Ink Input ähnlich RichText-Controls, zusätzlich Ink Input
& Texterkennung& Texterkennung• Versionen für .NET, ActiveX, Win32Versionen für .NET, ActiveX, Win32
• InkPictureInkPicture• ähnlich InkCollector, InkOverlayähnlich InkCollector, InkOverlay• Ink auf Bildern (JPG, BMP, PNG, GIF)Ink auf Bildern (JPG, BMP, PNG, GIF)• Versionen für .NET & ActiveXVersionen für .NET & ActiveX
Tablet PC Edition
InkEditInkEdit
• Eigenschaften:Eigenschaften:• InkModeInkMode: InkAndGesture, Ink, Disabled: InkAndGesture, Ink, Disabled• StatusStatus: Idle, Collecting, Recognizing: Idle, Collecting, Recognizing• InkInsertModeInkInsertMode: InsertAsText, InsertAsInk: InsertAsText, InsertAsInk• DrawingAttributesDrawingAttributes• UseMouseForInputUseMouseForInput (bool) (bool)• CursorCursor (Maus-Cursor!)(Maus-Cursor!)
• Methoden:Methoden:• Ink[] Ink[] SelInks()SelInks()• InkDisplayMode InkDisplayMode SelInksDisplayMode()SelInksDisplayMode()
• Ink, TextInk, Text
InkEditDemo
Tablet PC Edition
Erkennung beeinflussenErkennung beeinflussen
• RecognizerRecognizer-Eigenschaft für detaillierte -Eigenschaft für detaillierte EinstellungenEinstellungen
• FactoidFactoid-Eigenschaft verfügbar-Eigenschaft verfügbar
• RecoTimeoutRecoTimeout: Wartezeit vor Umsetzung: Wartezeit vor Umsetzung
• Erkennung manuell starten: Erkennung manuell starten: Recognize()Recognize()
• GestureGesture-Ereignis und -Ereignis und SetGestureStatus()SetGestureStatus() für Gestenerkennungfür Gestenerkennung• Default: DownLeft[Long] (Return), Default: DownLeft[Long] (Return),
UpRight[Long] (Tab), Right (Space), Left UpRight[Long] (Tab), Right (Space), Left (Bkspc)(Bkspc)
Tablet PC Edition
InkPictureInkPicture
• Kombination aus Kombination aus InkOverlayInkOverlay und und PictureBoxPictureBox
• InkEnabledInkEnabled statt (InkOverlay.) statt (InkOverlay.)EnabledEnabled
PaperForm
Tablet PC Edition
Neu in Version 1.5Neu in Version 1.5
• PenInputPanelPenInputPanel• frei programmierbarer Eingabebereichfrei programmierbarer Eingabebereich• unterstützt TSF & Korrekturunterstützt TSF & Korrektur
• DividerDivider• Ink-Analyse, Trennung von Text & GrafikInk-Analyse, Trennung von Text & Grafik
PIPSerialization
Tablet PC Edition
DesignrichtlinienDesignrichtlinien
• visuelle Kennzeichnungvisuelle Kennzeichnungvon Eingabebereichenvon Eingabebereichen
• DPI-AbhängigkeitDPI-Abhängigkeit
• BildschirmorientierungBildschirmorientierung(1024x768 (1024x768 768x1024) 768x1024)
• Modalität (Schreiben, Löschen, Zeigen, …)Modalität (Schreiben, Löschen, Zeigen, …)• expliziter Wechsel & Zustandsanzeigeexpliziter Wechsel & Zustandsanzeige
• ErgonomieErgonomie• Zielen: Bereiche <5mm schwer zu treffenZielen: Bereiche <5mm schwer zu treffen• Auswählen: Lasso-ToolAuswählen: Lasso-Tool• Hovering: spezielle Version von COMCTL32.DLLHovering: spezielle Version von COMCTL32.DLL
Tablet PC Edition
DesignrichtlinienDesignrichtlinien
• Parallaxe durch Bildschirmdicke & Parallaxe durch Bildschirmdicke & LichtbrechungLichtbrechung• KalibrierungKalibrierung
• Rechts-/Linkshänder Rechts-/Linkshänder (Menüs!)(Menüs!)
• Performancefragen fürPerformancefragen fürnatürlich wirkendesnatürlich wirkendesSchreibenSchreiben
Tablet PC Edition
AgendaAgenda
• Tablet PC: Hardware & SoftwareTablet PC: Hardware & Software
• Tablet-FunktionalitätTablet-Funktionalität• StifteingabeStifteingabe• Digitale TinteDigitale Tinte• SchrifterkennungSchrifterkennung
• Entwickeln für den Tablet PCEntwickeln für den Tablet PC• Das SDK im ÜberblickDas SDK im Überblick• Managed LibrariesManaged Libraries• Design-RichtlinienDesign-Richtlinien
• ZusammenfassungZusammenfassung
Tablet PC Edition
ZusammenfassungZusammenfassung• Ink ist das grundlegende Objekt in Ink ist das grundlegende Objekt in
stiftbasierten Anwendungen.stiftbasierten Anwendungen.
• Das SDK bietet umfangreiche & Das SDK bietet umfangreiche & komfortable Möglichkeiten zur komfortable Möglichkeiten zur Manipulation von Ink, zur Analyse & Manipulation von Ink, zur Analyse & Schrifterkennung.Schrifterkennung.
• Für Standardaufgaben stehen Ink Controls Für Standardaufgaben stehen Ink Controls zur Verfügung.zur Verfügung.
• Es bestehen besondere Anforderungen an Es bestehen besondere Anforderungen an das UI-Design.das UI-Design.
Tablet PC Edition
Fragen!?Fragen!?
Uff...Uff...
Tablet PC Edition
BuchempfehlungBuchempfehlung
• Rob Jarrett, Philip SuRob Jarrett, Philip Su“Building Tablet PC “Building Tablet PC Applications”Applications”Microsoft Press 2003Microsoft Press 2003ISBN 0-7356-1723-6ISBN 0-7356-1723-6
Tablet PC Edition
Weiterführende InfosWeiterführende Infos
• Tablet PC Platform SDKTablet PC Platform SDKhttp://msdn.microsoft.com/downloads/default.asphttp://msdn.microsoft.com/downloads/default.asp?url=?url=/downloads/sample.asp?url=/MSDN-FILES//downloads/sample.asp?url=/MSDN-FILES/027/002/015/msdncompositedoc.xml027/002/015/msdncompositedoc.xml
• Tablet Developer Info @ MicrosoftTablet Developer Info @ Microsofthttp://www.microsoft.com/windowsxp/tabletpc/http://www.microsoft.com/windowsxp/tabletpc/developers/default.aspdevelopers/default.asp
• Tablet PC Developer CommunityTablet PC Developer Communityhttp://www.tabletpcdeveloper.com/http://www.tabletpcdeveloper.com/
Tablet PC Edition
Slides & DemosSlides & Demos
• http://www.frankpr.de/http://www.frankpr.de/
Vielen Dank!
Tablet PC Edition