Posts Tagged ‘Entwickler’
Mit dem Tablet PC jetzt schon Anwendungen für Windows Phone 7 entwickeln

Microsoft hat eine erste CTP von Visual Studio 2010 Express for Windows Phone zum Download bereitgestellt. Im Moment steht die CTP nur in englischer Sprache zur Verfügung. Außerdem werden sich bis zum engültigen Release noch erhebliche Veränderungen ergeben, weshalb Microsoft empfiehlt, diese CTP auf einem separaten Rechner zu installieren. Mit dieser CTP ist es bereits jetzt möglich, Anwendungen für Windows Phone 7 zu erstellen und sich mit den neuen Bedingungen der Programmierung für das kommende Betriebssystem für Mobiltelefone vertraut zu machen, auch wenn noch keine Mobiltelefone verfügbar sind, auf denen die erstellten Anwendungen ausführen lassen.

Trotzdem ist es möglich, die entwickelten Anwendungen zu testen. Visual Studio 2010 Express for Windows Phone enthält einen Emulator, auf dem sich die Anwendung wie auf einem Mobiltelefon anzeigen und nutzen lässt. Wird die CTP auf einem multitouchfähigen Tablet PC installiert, lassen sich auch die Multitouchfähigkeiten von Windows Phone 7 nutzen, da die Multitouchfähigkeit des Hostrechners an den Emulator weitergegeben wird.

Allerdings müssen sich sowohl Anwender als auch Entwickler auf etliche Änderungen einstellen. Einige dieser Änderungen sind vorbehaltlos zu begrüßen, während andere doch erhebliche Zweifel aufwerfen. Hier in zufälliger Reihenfolge einige der Änderungen:

  • Windows Phone 7 unterstützt kein Multitasking mehr. Damit wird es vermutlich nicht mehr möglich sein, unterwegs Musik zu hören, während man gleichzeitig seine E-Mails bearbeitet. Während die nächste Generation des iPhones auch Mulitasking beherrscht, geht Microsoft hier leider den umgekehrten Weg. Der Sinn dieser Änderung erschließt sich mir bislang noch nicht. Die geringfügig längere Lebensdauer des Akkus gleicht den Komfortverlust meiner Meinung nach nicht aus.
  • Es wird erheblich weniger Farbe geben. Der Desktop von Windows Phone 7 ist weiße Schrift auf schwarzem Grund. Weniger bunte Farben einzusetzen macht die Oberfläche sicher besser bedienbar, aber die Farbwahl ist zumindest gewöhnungsbedürftig. Wie sinnvoll sie ist, wird erst der Einsatz in der Praxis zeigen. Auf den allerersten Blick erinnert die Farbwahl an die guten alten Zeiten und DOS und dem Norton Commander mit seiner Blöckchengrafik (na gut, diese Bemerkung ist etwas polemisch).
  • Die Kompaktversion des SQL Servers wird zumindest in der ersten Version unter Windows Phone 7 nicht laufen. Frank Prengel zeigte sich auf der Extopia kompakt aber zuversichtlich, dass nach kurzer Zeit findige Entwickler andere Lösungen für das Speichern strukturierter Daten anbieten werden. Vielleicht C-ISAM für Windows Phone?
  • Es wird nicht mehr möglich sein, “einfach so” Anwendungen zu entwickeln und anschließend zu vertreiben. Alle Anwendungen für Windows Phone 7 müssen ein Zertifikat von Microsoft erhalten und dürfen nur über den Marketplace von Microsoft vertrieben werden. Microsoft hat auch angekündigt, dass die Anwendungen vor der Veröffentlichung durch Microsoft überprüft werden. Ich hoffe nur, dass sich die Überprüfung der Anwendungen nicht auf die Einhaltung formaler Kriterien beschränkt, sondern sich auch auf die Nutzbarkeit der Anwendung erstreckt. Ich habe selbst eine Anwendung für Windows 6.5 vom Marketplace heruntergeladen, die so chaotisch geschrieben wurde, dass mir die Lust auf weitere Käufe auf dieser Plattform derzeit vergangen ist. Außerdem wäre es sicher interessant zu erfahren, welchen Anteil am Verkaufspreis Microsoft verlangt. Hoffentlich ist der Anteil geringer als bei Apple, wo für die Entwickler kaum etwas übrigbleibt.
  • Inhouse-Entwicklungen müssen nicht über den Marketplace installiert werden, sondern für Anwendungen für den eigenen Gebrauch können separate Zertifikate erworben werden. Nähere Informationen sind aber bei Microsoft derzeit noch nicht erhältlich.
  • Bislang konnten die Hersteller von Mobiltelefonen die Startseite weitgehend selbst gestalten und ihren Geräten damit ein einmaliges Aussehen geben. Dies wird unter Windows Phone 7 nur noch eingeschränkt möglich sein. Die obere Hälfte des Startbildschirms wird von Microsoft festgelegt und kann nicht verändert werden. Diese Änderung ist verständlich, da Microsoft möchte, dass die Mobiltelefone sofort als Windows-Handy erkannt werden.
  • Außerdem orientiert sich die Gestaltung der Benutzeroberfläche mehr als früher an den Piktogrammen, die uns auch sonst überall im täglichen Leben begegnen. Während ich andere Neuerungen an der Oberfläche von Windows Phone als eher gewöhnungsbedürftig empfinde, kann ich mir hier schon vorstellen, dass sie die Telefone intuitiver bedienbar macht. Die Oberfläche imitiert jetzt nicht mehr den Desktop des PCs, sondern orientiert sich stärker an den Anforderungen an Mobiltelefone.
  • Schade finde ich, dass Windows Phone 7 keine Eingabe mit dem Stift mehr unterstützt. Bereits jetzt akzeptieren einige Telefone mit Windows 6.5 mobile keine Stifteingaben. Ein Beispiel dafür ist das HTC HD2. Vielleicht liegt es ja an meinen Wurstfingern, aber in einigen Fällen liegen die Elemente so dicht beieinander, dass die Bedienung zum Glücksspiel wird. Ein Beispiel dafür ist die Aufgabenliste von Outlook Mobile. In diesen Fällen würde ich mir schon die Stifteingabe zurückwünschen.
  • Dass Entwickler keinen programmgesteuerten Zugriff auf die Hardware mehr haben werden ist für sich gesehen kein Nachteil und dient der Sicherheit.
Webtipp: der User Experience Blog

In vielen Arbeitsbereichen ist die Produktivitätssteigerung durch den Tablet PC enorm. Bei der Arbeit mit dem Tablet PC fällt aber doch sehr schnell auf, dass die Oberflächen der meisten Anwendungen nicht für die Arbeit mit dem Stift und den Fingern entworfen wurden. OK, es gibt einige Anwendungen, die speziell für den Tablet PC entwickelt wurden. Neben doch eher speziellen Lösungen für bestimmte Branchen, beispielsweise für die Medizin, sind hier vor allem die alternative Bildschirmtastatur Fitaly, das Journal von Windows sowie InkSeine zu nennen, das Forschungsprojekt von Microsoft Research. Ich wurde aber immer das Gefühl nicht los, dass das noch nicht alles sein kann, auch wenn ich nicht speziell sagen konnte, wo das schlechte Gefühl herkam. Auch intensive Suchen im Web blieben lange Zeit erfolglos. Niemand scheint sich um die User Experience bei der Arbeit mit dem Tablet PC zu kümmern oder die Beiträge sind für einen “normalen Menschen” ohne akademische Vorbildung in Design nicht verständlich. Nun bin ich eher durch Zufall über den von Ulf Schubert betriebenen User Experience Blog gestolpert. In seinem Blog schreibt Ulf Schubert über User Experience Design, Produktinovationen, User Centered Design, Interaction Design und User Interface Design. Dass er sich dabei nicht auf marktreife Technologien oder eine spezielle Hardware beschränkt, sondern auch über die unterschiedlichsten Versuche im Bereich User Experience schreibt, macht den Blog noch interessanter, manchmal auch unterhaltsam.

Einführung in die Entwicklung für den Tablet PC

von Markus Egger

Wenn Sie mit Microsofts Werkzeugen für die Entwicklung auf dem PC vertraut sind, verfügen Sie bereits über den Großteil der Kenntnisse, die Sie für die Anwendungsentwicklung für den Tablet PC benötigen. Hauptsächlich kommen noch die digitale Tinte sowie die mit ihr zusammenhängenden Features wie die Collection Ink hinzu. Zusätzlich müssen Sie noch einige weitere kleinere Dinge beachten, beispielsweise Überlegungen zur neuen Benutzeroberfläche sowie die Arbeit mit dem Tablet PC im Hochformat.

Aus diesem Grund konzentriert sich diese Website auf die Entwicklung für den Tablet PC und für den mobilen PC. Sie soll Sie mit allen Informationen versorgen, die Sie benötigen, um erfolgreich Anwendungen zu implementieren, die die Features von mobilen Rechnern und Tablet PCs ausnutzen. Die Artikel führen Sie zur Lösung von Problemen, die bei dieser Entwicklung auftauchen. Wenn Sie die Artikel gelesen haben, sollten sie den Überblick haben, welche Themen bei der Entwicklung eine Rolle spielen und was Sie bedenken müssen.

In diesem Artikel betrachten wir die Entwicklung für den Tablet PC als Ganzes und sehen, wie die einzelnen Themen miteinander harmonieren. Er bildet einen schnellen Überblick. Detaillierte Beschreibungen der unterschiedlichen Themen entnehmen Sie bitte den anderen Artikeln dieser Website.

Möglichkeiten und Vorteile

Tablet PCs sind reguläre PCs. Einige Entwickler und Anwender sind nach wie vor der Meinung, dass sie mit einem speziellen Betriebssystem wie Windows CE laufen, was nicht der Fall ist (glücklicherweise scheint diese Gruppe aber kleiner zu werden). Die erste Generation der Tablet PCs (vor Windows Vista) führte eine spezielle Version von Windows XP Professional aus, Windows XP Tablet PC Edition genannt. Dabei handelt es sich um eine Erweiterung von Windows XP Professional, was bedeutet, dass alle Features von Windows XP auch auf dem Tablet PC zur Verfügung stehen. Zusätzlich enthält diese Edition Features, die nur auf dem Tablet PC zur Verfügung stehen, beispielsweise die Komponenten der Collection Digital Ink, sowie einige speziell für den Tablet PC entwickelte Anwendungen wie das Windows Journal.

Mit Erscheinen von Windows Vista wurde die Tablet PC-Funktionalität in das reguläre Betriebssystem mit aufgenommen. Aus diesem Grund sagen einige, dass jede Version von Windows Vista ein Tablet PC-Betriebssystem ist. Das ist im Grunde wahr, obwohl es technisch betrachtet nach wie vor eine spezielle Version von Windows Vista für den Tablet PC gibt, die Komponenten wie den TIP (Tablet PC Input Panel = Eingabebereich für den Tablet PC) umfasst, welche auf einem anderen Rechner als dem Tablet PC schlicht und einfach keinen Sinn machen. Diese Komponenten fallen generell in den Bereich des Zubehörs. Die grundlegenden Funktionalitäten des Tablet OCs, beispielsweite die digitale Tinte, stehen aber in allen Versionen von Windows Vista zur Verfügung.

Das wichtigste Feature der Tablet PCs ist die Unterstützung der digitalen Tinte. Die Anwender können mit einem speziellen Stylus (dem Stift) auf das Gerät schreiben. Die Bewegungen des Stylus werden durch einen elektromagnetischen Digitizer erkannt. Diese Informationen werden mit einer sehr hohen Auflösung und einer sehr hohen Samplingrate erkannt. Sie umfassen neben den X- und Y-Koordinaten des Stifts zu einem gegebenen Zeitpunkt Informationen wie den Druck sowie in Abhängigkeit von der aktuellen Hardware und der Wahl durch den Entwickler die Drehung des Stifts und anderes.

Die Daten des Stylus werden durch das Betriebssystem empfangen und können auf unterschiedliche Arten interpretiert werden. So können die Stiftinformationen immer als Mauseingaben angesehen werden. In vielen Szenarien wird eine Serie von Stift-Datenpaketen (einzelnen Messungen) als digitale Tinte interpretiert – in Form einer Linie oder Kurve auf der Basis verschiedener Punkte. Die Stiftbewegungen werden generell auf den Bildschirm gezeichnet, in der Regel in Echtzeit und schaffen damit die Illusion von Tinte, die aus dem Stift fließt oder des Schreibens auf den Monitor.

Diese digitale Tinte kann auf unterschiedliche Arten genutzt werden. Die Anwender können mit der Hand geschriebene Notizen so speichern, wie sie sie geschrieben haben. Obwohl diese Nachrichten lediglich aus einer Reihe von Linien bestehen, kann der Tablet PC Ink Recognizer diese Linien analysieren und sie in sinnvolle Daten umwandeln, beispielsweise in Text. Dadurch sind die Anwender in der Lage, innerhalb ihrer Notizen zu suchen oder sie in regulären Text umzuwandeln.

Digitale Tinte ist auch in Verbindung mit anderen Daten hilfreich, beispielsweise mit Textdokumenten oder Grafiken. Die Anwender können ihren Dokumenten mit Hilfe der Tinte Notizen hinzufügen. Alle neuen Produkte in Microsoft Office sind gute Beispiele für solche Szenarien.

Die digitale Tinte wird nicht immer als Handschrift interpretiert. Eventuell zeichnet der Anwender Linien, Rechtecke oder Dreiecke, um ein Diagramm zu erstellen. Oder wie sieht es mit der Erkennung handgeschriebener Musiknoten in einer entsprechenden Anwendung aus?

Ein vollständig anderer Blickwinkel auf die Stifteingabe ist, sie als Gesten zu interpretieren. Der Anwender könnte einen Kreis, eine kurze Linie oder eine andere Figur auf der rechten Seite zeichnen, die als eine bestimmte Aktion interpretiert wird. Oder eventuell streicht der Anwender einen Bereich des Bildschirms aus (mit einer Zickzacklinie über vorhandenem Inhalt vor und zurück), was als Löschoperation interpretiert wird.

Die Möglichkeiten sind nur durch Ihre Phantasie begrenzt. Letztendlich besteht das Ziel darin, nicht nur die Erfahrung des Anwenders beim Schreiben auf Papier zu reproduzieren, sondern in der Erweiterung seiner Erfahrungen, indem Funktionalitäten und Features hinzugefügt werden, über die der Anwender beim Schreiben auf Papier nicht verfügt.

Fangen wir an

Um mit der Entwicklung für den Tablet PC zu beginnen, benötigen Sie entweder eine auf COM (Visual FoxPro oder Visual Basic 6) oder auf .NET basierende Entwicklungsumgebung. In diesen Artikeln werden wir für die Beispiele in erster Linie Visual Studio (.NET) verwenden. Außerdem benötigen Sie das Tablet PC SDK, das Sie kostenfrei vom Tablet PC Developer Center ( http://msdn.microsoft.com/TabletPC) herunterladen können. Sie benötigen für die Entwicklung von Tablet PC-Anwendungen nicht zwingend einen Tablet PC, da Sie die Maus  verwenden können, um Stifteingaben zu emulieren. Wenn Sie aber eine größere Tablet PC-Anwendung entwickeln, ist es doch sehr empfehlenswert, einen eigenen Tablet PC zur Verfügung zu haben, da Sie vermutlich selbst die User Experience sowie die Qualität überprüfen wollen. Am Beginn können Sie aber alle Tablet PC-Komponenten auf Ihrem Desktop installieren.

Vermutlich werden Sie überrascht sein, zu erfahren, wie einfach es ist, mit dem Tablet PC SDK Anwendungen zu erstellen. Features wie die Handschrifterkennung, die die Grenzen dessen verschiebt, die der IT heute gesetzt sind, sind aus der Sicht des Entwicklers her sehr einfach zu implementieren.

Beachten Sie, dass auf einem Tablet PC-Betriebssystem alle Anwendungen digitale Tinte unterstützen, indem dafür Technologien wie der Eingabebereich verwendet werden, die die digitale Tinte auch für Anwendungen verfügbar machen, die die Tinte nicht nativ unterstützen (Abbildung 1).

Abbildung 1. Mit Hilfe des Tablet PC-Eingabebereichs können auch Anwendungen mit digitaler Tinte arbeiten, die dies nativ nicht unterstützen.

Optionen für die Collection Ink und das Rendering

Für das Einsammeln digitaler Tinte stehen verschiedene Optionen zur Verfügung. Zunächst einmal wird das Tablet PC SDK mit verschiedenen Steuerelementen wie dem Steuerelement InkEdit ausgeliefert, das Sie einfach auf ein Formular ziehen können. Es stellt eine Textbox bereit, die Sie sowohl für die Eingabe mit Standardtastaturen als auch für die Eingabe handgeschriebener Tinte verwenden können. Die Tinte kann wahlweise als Tinte gespeichert oder automatisch in regulären Text umgewandelt werden. InkEdit ist eine Erweiterung des Steuerelements RichTextBox.

Dementsprechend gibt es auch das Steuerelement InkPicture, das eine besondere Version des Steuerelements Picture darstellt. Wie Sie vermutlich erwarten, kann dieses Steuerelement eine Grafik anzeigen und ermöglicht dem Anwender, darüber zu schreiben oder zu zeichnen.

Diese Steuerelemente stellen eine schnelle Möglichkeit dar, Ihren Anwendungen den Umgang mit der digitalen Tinte zu ermöglichen. Allerdings ist die User Experience durch diese Steuerelemente (besonders von InkEdit) nicht wirklich gut. Wir sollten diese Steuerelemente wohl eher als Vorlage betrachten, nicht als Steuerelemente für Produktionsanwendungen. Für Anwendungen im wahren Leben wären intelligentere Lösungen sinnvoll, die uns aber auch auf unterschiedliche Arten zur Verfügung stehen.

Abbildung 2. Fügen Sie Ihren Verweisen die die Microsoft Tablet PC API hinzu (Microsoft.Ink). Sollten Sie die API neu installiert haben müssen Sie Visual Studio neu starten, damit die API in der Liste erscheint.

Die Standardlösung ist der Einsatz der Klassen InkCollector und InkOverlay. Diese Klassen können jedem regulären Steuerelement hinzugefügt werden, wodurch das Steuerelement auch mit digitaler Tinte umgehen kann. Um diese Klassen in Aktion zu sehen, erstellen Sie eine neue Anwendung bzw. ein neues Projekt in der .NET-Sprache Ihrer Wahl. Fügen Sie den Assembly-Referenzen Ihres Projekts das Assembly Microsoft Tablet PC API hinzu (Abbildung 2). Anschließend ziehen Sie ein Steuerelement Ihrer Wahl auf das Formular. In meinem Beispiel verwende ich das Steuerelement Panel mit weißem Hintergrund, um einen weißen Schreibbereich zu simulieren. Anschließend instanziieren Sie ein Objekt Inkcollector und fügen es dem Panel hinzu. Dafür sollten Sie auf dem Formular zunächst ein Feld erstellen, das die Instanz enthalten kann. In C# geschieht dies folgendermaßen:

public class Form1 : System.Windows.Forms.Form
{
    private Microsoft.Ink.InkCollector collector;

    // default form code continues here...

Die Version in Visual Basic ist ähnlich:

Public Class Form1
   Inherits System.Windows.Forms.Form

   Private collector As Microsoft.Ink.InkCollector

    ' default form code continues here...

Anschließend instanziieren Sie im Constructor des Formulars das Objekt InkCollector und fügen es dem Steuerelement hinzu, das die Tinte verarbeiten soll. Dies funktioniert mit jedem Steuerelement, beispielsweise einem Panel oder einer Textbox wie auch mit dem gesamten Formular. In meinem Beispiel füge ich den Collector dem Steuerelement Panel hinzu. Hier die Version in C#:

 public Form1()
{
    InitializeComponent();

    this.collector = new
        Microsoft.Ink.InkCollector(this.panel1);
    this.collector.Enabled = true;
}

 Auch hier ist die Version in Visual Basic .NET sehr ähnlich:

Public Sub New()
    MyBase.New()

    InitializeComponent()

    Me.collector = _
        New Microsoft.Ink.InkCollector(Me.Panel1)
    Me.collector.Enabled = True
End Sub

Das war’s. Ihre erste Windows-Anwendung, die Tinte verarbeiten kann, ist fertig. Das Ergebnis sehen Sie in Abbildung 3.

Abbildung 2. Dies ist eine einfache Anwendung mit einem Panel und einer Klasse InkCollector, die mit digitaler Tinte umgehen kann.

Viele Anwendungen, die mit digitaler Tinte arbeiten, verwenden dieses Vorgehen als Basis für alle Features der Tinte. Die Klasse InkCollector stellt umfangreiche Funktionalitäten bereit. Sie sammelt die Tinte, speichert sie im Objekt Ink und rendert die Tinte, um auf diese Weise sicherzustellen, dass sie immer korrekt neu gezeichnet wird, wenn dies erforderlich ist. Beachten Sie, dass das Rendern der Tinte in einer sehr hohen Qualität geschieht, indem die Renderingengine verschiedene Techniken verwendet, um die Linienränder glatt darzustellen.

Die Verwendung von Ink-Sammlungen erleichtert auch das Ändern der Attribute der Tinte, beispielsweise der Farbe. Der folgende C#-Code legt für zukünftige Eingabe über Tinte die Standardfarbe Rot fest:

collector.DefaultDrawingAttributes.Color =
    Color.Red;

Entfernen Sie das Semikolon am Ende der Zeile und schon haben Sie die Visual Basic .NET-Version für die gleiche Operation.

Die Tinteninformationen, die im InkCollector hinzugefügten Objekt Ink gesammelt wurden, bieten auch den Zugriff auf ein sehr mächtiges Feature: die Schrifterkennung. Das folgende C#-Codesnippet zeigt Ihnen, wie Sie Handschrift in regulären Text umwandeln:

MessageBox.Show(
    this.collector.Ink.Strokes.ToString());

Hier die Version in Visual Basic .NET:

 MsgBox(Me.collector.Ink.Strokes.ToString())

So einfach ist es wirklich! Wenn Sie es wünschen, können Sie vom Recognizer noch erheblich mehr Informationen beziehen, beispielsweise weitere Optionen, Vertrauensstufen und vieles mehr. Sie könnten auch die Bedeutung von Formen sowie von Leerräumen in der Tinte erkennen. Oder eventuell wollen Sie die Erkennung asynchron als Hintergrundprozess durchführen. Weitere Informationen über die Auswertung der Tinte entnehmen Sie bitte dem Artikel „Erkennung und Analyse digitaler Tinte“.

Im Objekt Ink sind alle Informationen über die digitale Tinte gespeichert. Die Tinte ist in einzelne Linien aufgeteilt, die sich ihrerseits aus einzelnen Punkten zusammensetzen. Mit Hilfe dieses Objekts können Entwickler die digitale Tinte im Speicher manipulieren. So kann die Tinte beispielsweise auf einfache Weise in einer Datei gespeichert werden:

byte[] inkBytes = this.collector.Ink.Save();
FileStream strm = 
    File.Open(@"c:\test.isf", FileMode.Create);
strm.Write(inkBytes,0,inkBytes.Length);
strm.Close();

Hier die gleiche Aufgabe in Visual Basic:

Dim inkBytes As Byte() = Me.collector.Ink.Save()
Dim strm As FileStream = _
    File.Open("c:\test.isf", FileMode.Create)
strm.Write(inkBytes, 0, inkBytes.Length)
strm.Close()

Die Schlüsselzeile in diesem Snippet ist der Aufruf der Methode Ink.Save(). Save() wandelt die digitale Tinte automatisch in ein serielles Format um und gibt sie als Byte-Array zurück. Dieses Array können Sie an beliebiger Stelle speichern, beispielsweise wie in diesem Beispiel in einer Datei oder in einer Datenbank.

Das Laden digitaler Tinte geschieht auf ähnliche Weise, allerdings mit einem kleinen Stolperstein: Ink-Objekte verfügen über die Methode Load(). Diese Methode arbeitet nur dann verlässlich, wenn sie die Tinte in ein leeres Ink-Objekt lädt. Daher ist es erforderlich, dass Sie ein neues Ink-Objekt erstellen und dessen Methode Load() aufrufen, nicht die gleiche Methode eines vorhandenen Objekts. Hier ein funktionierendes Beispiel in C#:

FileStream strm = File.OpenRead(@"C:\test.isf");
FileInfo info = new FileInfo(@"C:\test.isf");
byte[] inkBytes = new byte[info.Length];
strm.Read(inkBytes,0,(int)info.Length);
strm.Close();

Ink newInk = new Ink();
newInk.Load(inkBytes);
this.collector.Enabled = false;
this.collector.Ink = newInk;
this.collector.Enabled = true;

Und hier die Version in Visual Basic .NET:

Dim strm As FileStream = _
    File.OpenRead("C:\test.isf")
Dim info As FileInfo = New FileInfo("C:\test.isf")
Dim inkBytes(info.Length) As Byte
strm.Read(inkBytes, 0, info.Length)
strm.Close()

Dim newInk As New Microsoft.Ink.Ink
newInk.Load(inkBytes)
Me.collector.Enabled = False
Me. collector.Ink = newInk
Me.collector.Enabled = True

Beachten Sie, dass Sie den Collector ausschalten, bevor ein neues Ink-Objekt angelegt wird, da andernfalls ein Fehler generiert wird.

Nähere Informationen zum Speichern der Tinte entnehmen Sie bitte dem Artikel „Digitale Tinte und die Datenbank“.

Mehr Power mit der Klasse InkOverlay

Neben der vollständigen Funktionalität von InkCollector enthält sie zusätzliche Methoden, beispielsweise für die Auswahl und Manipulation von Tinte. Sie können einfach in unserem oben stehenden Beispiel die Referenzen auf InkCollector gegen Referenzen auf InkOverlay austauschen und alles funktioniert wie vorher. Ihnen stehen aber zusätzlich neue Features zur Verfügung, beispielsweise die Möglichkeit, das Overlay in den Auswahlmodus umzuschalten:

this.overlay.EditingMode = 
    Microsoft.Ink.InkOverlayEditingMode.Select;

Die Version in Visual Basic .NET ist praktisch identisch:

Me.overlay.EditingMode = _
    Microsoft.Ink.InkOverlayEditingMode.Select

Abbildung 4 zeigt Ihnen ein Beispiel für den Auswahlmodus von InkOverlay (den Auswahlmodus) in Aktion.

Abbildung 4. Die Klasse InkOverlay unterstützt im Gegensatz zur Klasse InkCollector den Auswahlmodus.

Sowohl InkCollector als auch InkOverlay lösen aufgrund der Eingabe digitaler Tinte Ereignisse aus. Als Beispiel können Sie das Ereignis CursorInRange verwenden, um festzustellen, wann der Stift bis auf einen Zentimeter an die Bildschirmoberfläche herangeführt wurde (elektromagnetische Digitizer können einen Stift erkennen, während er sich noch in der Luft befindet). Dieses Ereignis können Sie einsetzen, um festzustellen, ob die Stiftspitze oder das stumpfe Stiftende an den Bildschirm geführt wird und um aufgrund dessen die Overlayklasse in den Editier- oder Löschmodus zu schalten. Um dieses Ereignis in C# zu verwenden, müssen Sie einen Eventhandler einsetzen:

this.overlay.CursorInRange += 
    new  InkCollectorCursorInRangeEventHandler(
    overlay_CursorInRange);

Im Anschluss müssen Sie den Code schreiben, der dieses Ereignis behandelt:

private void overlay_CursorInRange(object sender,
    InkCollectorCursorInRangeEventArgs e)
{
    if (e.Cursor.Inverted)
    {
        this.overlay.EditingMode = 
            InkOverlayEditingMode.Delete;
    }
    else
    {
        this.overlay.EditingMode = 
            InkOverlayEditingMode.Ink;
    }
}

In Visual Basic müssen Sie darauf achten, dass das Overlay mit WithEvents definiert ist:

Private WithEvents overlay _
    As Microsoft.Ink.InkOverlay

Anschließend können Sie das Ereignis auf folgende Weise behandeln:

Private Sub overlay_CursorInRange( _
    ByVal sender As Object, ByVal e _
    As InkCollectorCursorInRangeEventArgs) _
    Handles overlay.CursorInRange

    If e.Cursor.Inverted Then
        Me.overlay.EditingMode = _ 
            InkOverlayEditingMode.Delete
    Else
        Me.overlay.EditingMode = _
            InkOverlayEditingMode.Ink
    End If
End Sub

Damit wird das Löschen mit dem Stiftende implementiert. Selbstverständlich können Sie das gleiche Ereignis auch für andere Zwecke verwenden. Sehen Sie sich auch einige der anderen verfügbaren Ereignisse an.

Alternativen für die Arbeit mit der digitalen Tinte

Die Objekte InkCollector und InkOverlay sammeln die Eingabeinformationen des Stifts und interpretieren diese als digitale Tinte oder als Gesten. In manchen Fällen wollen Sie digitale Tinte nicht einfach sammeln, sondern Sie wollen die Stiftdaten auf andere Weise interpretieren. Oder es ist eventuell erforderlich, die Stiftdaten zu manipulieren, bevor sie als digitale Tinte interpretiert werden. Eventuell hat die Performance allerhöchste Priorität oder Sie wollen eine nicht übliche Methodik implementieren, um die digitale Tinte in Echtzeit zu rendern. In solchen Fällen verwenden Sie die unter dem Namen „Real Time Stylus API“ bekannte API. Im Artikel „Verbessern Sie die Kontrolle und Performance mit der Real Time Stylus API“ erhalten Sie tiefgehende Informationen zu diesem Thema.

In Windows Vista ist die Unterstützung der digitalen Tinte Teil des Betriebssystems, anders als unter Windows XP, wo die digitale Tinte in einer Erweiterung des Betriebssystems verarbeitet wurde. Die neue Technologie WPF (Windows Presentation Foundation) für die Erstellung und Anzeige von Benutzeroberflächen unterstützt digitale Tinte nativ in allen Versionen von Windows. Das zentrale Objekt ist hier InkCanvas, das wir in einem anderen Artikel untersuchen werden.

Zusammenfassung

Die Entwicklung für den Tablet PC ist erheblich einfacher als es die meisten Entwickler vermuten, die sich mit dieser Umgebung noch nicht vertraut gemacht haben. Sie enthält viele Vorteile und Bereiche, die uns viele neue Funktionalitäten bereitstellen. Nutzen wir sie.

Dieser Artikel ist eine Übersetzung aus dem CoDe Magazine ( http://www.code-magazine.com). Auf dieser Website dürften für Sie besonders die Seite  http://www.code-magazine.com/focus/tabletpc/ sowie die auf dieser Seite verlinkten Artikel interessant sein.

Laden Sie die Begleitdateien hier herunter: IntroToTabletPC

Über den Autor:

Markus ist ein internationaler Sprecher und hat Sessions auf zahlreichen Konferenzen in Nord- und Südamerika sowie in Europa gehalten. Zusätzlich hat er viele Artikel für verschiedene Publikationen geschrieben, darunter CoDe Magazine, Visual Studio Magazine, MSDN Brasilien, ASP.NET Pro, FoxPro Advisor, Fuchs, FoxTalk sowie das Microsoft Office & Database Journal verfasst. Er ist Herausgeber des CoDe Magazine.

Außerdem ist er President und Chief Software Architect bei EPS Software Corp. in Houston, Texas, ein Unternehmen, das individuelle Programmierung und Beratung anbietet. Er ist auf die Beratung für objektorientierte Entwicklung, die Internetentwicklung, B2B und Webdienste spezialisiert. EPS erledigt einen Großteil seiner Entwicklung mit Microsoft Visual Studio .NET und hat an Softwareprojekten für die 500 größten Unternehmen mitgearbeitet, unter anderem für Philip Morris, Qualcomm, Shell und Microsoft. Zusätzlich hat Markus als externer Mitarbeiter im Microsoft Visual Studio-Team mitgearbeitet, wo er hauptsächlich für die Objektmodellierung und andere Technologien im Zusammenhang mit Objekten und Komponenten verantwortlich war.

Seit 1996 ist Markus für seine Mitarbeit in der Entwicklercommunity Microsoft MVP (Most Valuable Professional). LandPro, eine der Anwendungen, für die Markus verantwortlich war, wurde dreimal für den Microsoft Excellence Award nominiert. Sie erreichen ihn unter megger(at)eps-software.com.

Microsoft gibt erste Infos zu IE9 bekannt

OK, das ist nicht mehr so ganz aktuell, denn Steven Sinofsky, President der Windows Live Division hat bereits auf seiner Keynote auf der PDC 2009 über die zukünftige Version des Internet Explorers gesprochen. Aber eventuell geht es Ihnen ja wie mir. Ich habe das Video erst heute gesehen.

.NET Open Space: Die Registrierung ist eröffnet

Am 17. und 18. 10. 2009 findet in Leipzig der zweite .NET Open Space statt. Kurz zusammengefasst ist Open Space “die andere” Konferenz. Wie oft bin ich schon von einer Konferenz nach Hause zurückgekehrt und hatte das Gefühl, dass die Themen irgendwie etwas neben meinen Problemen waren und dass das Interessanteste an der Konferenz die Kaffeepausen waren. Das kann bei einem Open Space nicht passieren. Es gibt keine feste Tagesordnung, die Themen werden von den Teilnehmern vorgegeben und es gibt viiieeell Kaffeepause. Im letzen Jahr war ich zum ersten Mal auf einem Open Space und das Konferenzformat hat mir so gut gefallen, dass es keine Frage war, dass ich in diesem Jahr wieder nach Leipzig fahren werde.

Ort und Zeit waren bereits länger bekannt, aber heute morgen und 6:30 kam die Mail, dass ab heute die Registrierung möglich ist. Und nun, etwas mehr als 11 Stunden später, sind bereits 60 Teilnehmer registriert. Ich bin mir nicht sicher, wie viele Teilnehmer möglich sind (im letzten Jahr waren es 70 Teilnehmer, wenn ich das noch richtig im Kopf habe), aber wer auch noch nach Leipzig fahren möchte, sollte sich sputen, spätestens morgen wird die Veranstaltung wohl ausgebucht sein.

Blog-Parade bei MSDN

MSDN Deutschland veranstaltet eine Blog-Parade. Was ist das? bei einer Blog-Parade gibt es immer ein vorgegebenes Thema und sie wird durch einen Blog-Eintrag gestartet. An der Blog-Parade kann jeder Betreiber eines Blogs teilnehmen. Erstellen Sie einfach einen Artikel, in dem Sie Ihre drei Lieblings-Entwicklungswerkzeuge nennen und kurz begründen, weshalb dies Ihre Favoriten sind. Verweisen Sie in diesem Beitrag auf den Ursprungs-Beitrag, der dadurch automatisch einen Rückverweis (Trackback) erstellt. Die Einzelheiten finden Sie hier.
Dann will ich einfach einmal anfangen. Auch wenn es Microsoft nicht so sehr gefällt – mein bevorzugtes Werkzeug für die Entwicklung datenzentrierter Anwendungen ist und bleibt Visual FoxPro. Weshalb? Zum Einen arbeite ich seit der Version 2.5 mit dem Fuchs und er war mir in all den Jahren ein treuer und zuverlässiger Begleiter. Das Produkt ist so weit ausgereift, dass die erforderlichen Anpassungen an Windows Vista geschehen konnten, ohne dass dafür das Core-Produkt angefasst werden musste. Die gesamte Anpassung geschah über Add-Ons, die in Visual FoxPro geschrieben wurden. Welches andere Produkt kann das von sich behaupten? Ich meine auch, dass es auch heute noch sinnvoll ist, zumindest die Middle Tier in VFP zu entwickeln, da die Sprache in Entwicklung und Ausführung so schnell ist, dass sie nur schwer von anderen Produkten übertroffen werden kann.
Das zweite wichtige Entwicklungswerkzeug ist der SQL Server. Ich denke mir, dass er ausreichend bekannt sein sollte, so dass es nicht erforderlich ist, seinen Einsatz weiter zu begründen.
Und das dritte Werkzeug? C#. Weshalb? Ich habe Anfang der 90er Jahre ausführlich in C gearbeitet, anschließend nur noch in FoxPro. Aber auch nach einer mehr als 10jährigen Pause fand ich mich in C# schnell zurecht, konnte die alten Kenntnisse abstauben und anschließend produktiv verwenden. Was will man mehr?

Windows SideShow for Windows Mobile Developer Preview steht zum Download bereit

Erinnern Sie sich noch an Windows SideShow? Ja, genau, das waren die kleinen zusätzlichen Bildschirme an der Außenseite der Laptops, die Microsoft im Jahr 2006 oder 2006 vorgestellt hat, auf denen Sie Ihre E-Mail-Eingänge oder Ihre eBay-Auktionen auf dem Laptop verfolgen konnten, ohne den Laptop dafür starten zu müssen. Bislang hat sich diese Technik noch nicht durchgesetzt und die SideShow wurde nur vor einigen Jahren bei wenigen Business-Laptops eingebaut. Vermutlich aufgrund des stolzen Preises dieser Geräte habe ich SideShow noch nie in freier Wildbahn gesehen.

Mit Windows SideShow for Windows Mobile könnte diese Technologie jetzt ein Revival erleben. Dabei handelt es sich um eine Anwendung für Pocket PCs und Smartphones, auf denen Windows Mobile 5 oder 6 ausgeführt wird. Diese Geräte dienen dann als Bluetooth SideShow-kompatibles Gerät und stellen sich als zusätzliches Fenster Ihres Laptops oder Tablet PCs dar. Sie können mit Ihrem Pocket PC oder Smartphone sowohl auf Informationen auf dem Tablet PC zugreifen als auch den Tablet PC über eine Gadget-Oberfläche durch Ihren Pocket PC steuern. Befindet sich der Pocket PC oder das Smartphone außerhalb der Bluetooth-Reichweite des Tablet PCs, können Sie weiterhin auf die Informationen zugreifen, die Sie bereits von Ihrem Tablet PC heruntergeladen haben.

Sie können die englischsprachige Betaversion von der URL http://www.microsoft.com/downloads/details.aspx?FamilyID=79F19684-F862-4E02-A2B0-0003B4565F34&displaylang=en herunterladen.

Eingabeformulare erstellen (nicht nur) für Entwickler

Bereits seit fünf Jahren vertreibt die Fa. Active Ink Software mit Sitz in Del Rio in Kalifornien seine Produkte für die Entwicklung von Formularen für den Tablet PC. Ich habe die Software selbst noch nicht im Einsatz, aber bereits die Videos auf der Website des Unternehmens (www.activeinksoftware.com) zeigen erstaunliches: Lassen Sie von Ihrem Designer ein Office-Formular erstellen, drucken Sie es mit einem Druckertreiber von Ink Software und verwenden Sie die damit erstellte Datei in Ihrer Anwendung als Dateneingabeformular. Wenn die Software nur halb so viel leistet wie die Videos versprechen sind die Bibliotheken auf jeden Fall einen Blick wert.