o-LIVE-r

Windows, Windows Phone, Silverlight, Internet Explorer, and the Cloud

  • o-LIVE-r

    Webcasts zu Silverlight

    • 0 Comments

    MSDN Webcast Serie: Silverlight 3

     

    Teil 1: Neuerungen für Jedermann


    Dieser Webcast gibt einen einfachen Überblick über die wesentlichen Neuerungen von Silverlight 3: neue Medienformate, perspektivisches 3D, Pixel Shader, Out of Browser sowie viele Verbesserungen der Produktivität für Entwickler und Designer.

    Link: http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032421548

    Teil 2: Out-Of-Browser


    Silverlight 3 Anwendungen können ohne viel Aufwand zu Desktop-Anwendungen erweitert werden. Dieser Webcast zeigt, auf welche Dinge man achten muss, wenn man Out-Of-Browser-Anwendungen erstellen möchte. Wie z.B. installiert man eine Web-Anwendung auf dem Desktop? Wie erkennt man, wo die Anwendung ausgeführt wird, ob eine Internetverbindung besteht oder die Anwendung offline arbeitet? Und wie kann ich meine Anwendung so erstellen, dass sie sich automatisch aktualisiert, wenn eine neuere Version verfügbar ist?

    Link: http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032421609

    Teil 3: Navigation und Deep Linking


    Bisher war es nicht ganz einfach, auf die Browsernavigation zu agieren und über einen Link direkt auf bestimmte Inhalte einer Silverlight-Anwendung zuzugreifen. Durch die neuen Navigations-Features hat man jetzt die Möglichkeit, Silverlight-Anwendungen von der Navigation her genauso wirken zu lassen wie normale Webseiten.

    Link: http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032422320

    Teil 4: Medieninhalte


    In diesem Webcast sehen Sie, wie man mit Silverlight 3 Medieninhalte abspielen kann, wie man mit Expression Encoder 3 Medieninhalte aufbereitet und wie man IIS Smooth Streaming benutzt. Zum Schluß wird noch gezeigt, welche Hosting-Möglichkeiten es gibt. Insbesondere beim Kodieren wird auf die Erstellung von Screencasts eingegangen.

    Link: http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032422467

    MSDN Webcast Serie: Silverlight in Deep

     

    Teil 1: Aspektorientierte Programmierung in Silverlight

    Die aspektorientierte Programmierung unter Silverlight ermöglicht es, nicht-funktionale Anforderungen als Aspekte getrennt von der funktionalen Anforderung zu entwickeln, zum Beispiel Validierungen, Sicherheit, Performance und Wartbarkeit. Dadurch wird der spätere Source-Code übersichtlicher und somit besser wartbar, außerdem wird durch die Zentralisierung der Aspekte eine grandiose Freiheit für das komplette Projekt ermöglicht.

    Link: http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=1032422768 

     

    MSDN Webcast Serie: Silverlight für Einsteiger

    Teil 1: Die Werkzeuge für Silverlight

    Silverlight 2 bringt neben dem Plugin noch eine Vielzahl von Tools, SDKs und Websites mit, die in ihrer Fülle dem Entwickler sehr viele Informationen und Hilfen anbieten. Dieser Webcast gibt einen Überblick das Hilfeangebot und die Tools, die man für die Entwicklung von "Silverlight 2"-Anwendungen benötigt.

    Teil 2: Silverlight-Grundlagen

    Für die Integration von "Silverlight 2"-Anwendungen in seine eigene Website sind nicht viele Schritte notwendig. Dieser Webcast erklärt die Grundlagen und das Funktionsprinzip von "Silverlight 2".

    Teil 3: Einführung in XAML

    Eine der Grundlagen von Silverlight ist XAML. Mit XAML hat man die Möglichkeit, die gesamte Oberfläche und die Interaktion durch eine beschreibende Sprache zu definieren. Verschiedene Tools wie Visual Studio und Expression Studio können mittels dieser Sprache miteinander kooperieren. Dadurch ergeben sich eine Vielzahl von Möglichkeiten für den Designer und Entwickler.

    Teil 4: Silverlight mit JavaScript

    Silverlight 2 erlaubt für die Entwicklung sowohl die Verwendung von JavaScript also auch von Managed Code (C#, Visual Basic, etc.). Dieser Webcast zeigt, wie man mit JavaScript und Silverlight dynamische Webanwendungen erstellt.

    Teil 5: Silverlight mit Managed Code

    Dieser Webcast zeigt die Vorzüge von Managed Code und stellt die Grundlagen des .NET Frameworks vor.

    Teil 6: Expression Blend Einführung

    Expression Blend bietet einen anderen Ansatz für die Gestaltung von Anwendungen als man es bisher von Tools wie Visual Studio gewohnt ist. Expression Blend fokussiert sich ganz klar auf die Gestaltung und Interaktion mit Oberflächen.

    Teil 7: Silverlight mit Visual Studio

    Für die Entwicklung von Silverlight-Anwendungen gibt es eine hervorragende Integration von Silverlight-Tools, die in diesem Webcast erklärt und demonstriert werden.

    Teil 8: Arbeiten mit dem Deep Zoom Composer und dem MultiScaleImage

    Die "Deep Zoom"-Technologie in Silverlight ermöglicht es, sehr große Bilder und Bildersammlungen sehr schnell und effizient über das Internet zu übertragen und gleichzeitig ein völlig neues "Browsing"-Erlebnis zu liefern. Dieser Webcast zeigt, wie man mit Hilfe des Deep Zoom Composer entsprechende Bilder generiert und diese in Silverlight weiterverwendet.

    Teil 9: Eigene Controls mit Silverlight

    Einer der großen Vorteile von Silverlight ist die Möglichkeit, sehr einfach und schnell eigene Benutzersteuerelemente zu erstellen. Damit hat man einen hervorragenden Mechanismus zur Wiederverwendung von Benutzersteuerelementen. In diesem Webcast wird auf die Grundlagen der Steuerelement-Entwicklung eingegangen.

    Teil 10: Einführung in Expression Encoder

    Der Expression Encoder ist ein sehr hilfreiches Werkzeug für die Encodierung von Videos und Audios in das von Silverlight unterstützte WMV-Format bzw. WMA-Format. Er bietet eine Vielzahl von Optimierungsmöglichkeiten an und erlaubt es auch direkt einen Medienplayer für das erstellte Format zu generieren, den man beliebig weiterverwenden kann.

     

    LiftOff – Webcast-Serie: Silverlight

     

    Teil 1: Das Szenario stellt sich vor – die ersten Controls

    Das Szenario stellt einen Web-"Shop" vor, der Gebrauchtwagen anbietet. Mit den Möglichkeiten von Silverlight 2 wird eine benutzerfreundliche Oberfläche erstellt. Teil 1 dieser Webcast-Serie stellt das Szenario vor und gibt einen Überblick über die Projektstrukturen in Visual Studio und Expression Blend. Mit Silverlight Standard-Controls werden die ersten Bestandteile der Anwendung aufgebaut.

    Teil 2: Eigene Controls entwickeln, Styles anwenden und Animationen erstellen

    Teil 2 beschäftigt sich mit dem Entwickeln und Verwenden von eigenen Controls. Es wird ein Formular erstellt und anschließend mit Hilfe von Styles individuell gestaltet. Abschließend erfolgt eine Einführung in Animationen mit Expression Blend und das dynamische Erstellen von Animationen in Visual Studio.

    Teil 3: Geschäftslogik, Formulare und Benutzeranmeldung

    In Teil 3 geht es um die Business Logik. Formulareingaben werden verarbeitet und einer Plausibilitätsprüfung unterzogen. Außerdem wird am Beispiel einer „Windows Live“-Anmeldung die Integration der Silverlight-Anwendung in eine ASP.NET-Seite und der Datenaustausch mittels Javascript betrachtet.

    Teil 4: Arbeiten mit Daten. Datenbindung und LINQ

    Teil 4 beschäftigt sich mit Daten. So werden LINQ und Datenlayer am Beispiel der Anbindung von Daten aus XML und Web Services vorgestellt, welche anschließend mit Hilfe der Daten-Controls angezeigt werden. Formulardaten werden in eine Datenbank abgespeichert.

    Teil 5: Animationen und Videos

    Teil 5 gibt einen tiefergehenden Einblick in eigene Controls und Animationen. Zusätzlich wird das Thema „Videos in Silverlight“ behandelt. Dies umfasst das Encoding, die Erstellung eines Players und das Erstellen von Videos mit Hilfe des Expression Encoders.

     

    MSDN Webcast Serie: Tipps und Tricks zu Silverlight 2

    Teil 1: Externe Daten einbinden leicht gemacht

    Silverlight kann theoretisch mit nahezu allen Datenformaten arbeiten. Allerdings gibt es oftmals Herausforderungen bei Cross-Domain-Calls. Dieser Webcast zeigt, wie man die Cross-Domain-Problematik umgeht und beliebige Daten aus anderen Quellen in Silverlight verwenden kann.

    Teil 2: Daten visualisieren mit Templates für Fortgeschrittene

    Daten laden ist einfach. Daten visualisieren ebenfalls. Auch Nicht-Designer können mit einfachen Mitteln und leichtem Databinding Daten sehr ansprechend visualisieren und interaktiver visualisieren. Dieser Webcast beschreibt den Mechanismus zum Binden von Daten in Silverlight und zeigt. wie man mit einfachen Mitteln seine Daten ansprechend darstellen kann.

    Teil 3: Erstellen eigener Layout-Container

    Mit Canvas, Grid, Border, StackPanel und dem Scrollviewer stehen Silverlight schon mächtige Layoutmechanismen zur Verfügung. Allerdings kann man auch selber sehr leicht einen Container zum automatischen Layouten von Steuerelementen verwenden. Dieser Webcast zeigt, wie man solche Container selber baut und liefert gleich einige neue Container mit.

    Teil 4: Datenuploads mit Silverlight

    Daten in Silverlight hinladen ist sehr einfach. Was viele jedoch (noch) nicht wissen ist, dass man in Silverlight auch Daten an beliebige Server "hochladen" kann. Es ist möglich, beliebig große Dateien einfach auf einen Server zu laden und dem Benutzer während des Upload-Vorgangs eine ordentliche Fortschrittsanzeige zu präsentieren. Dieser Webcast liefert das Know-How und den Code für eigene Datei-Upload-Steuerelemente.

    Teil 5: Design-Time-und Debugger-Tricks

    In Silverlight sind einige praktische Features enthalten, die es Entwicklern ermöglichen, UI-Designern die Arbeit zu erleichtern. So können bereits in Blend Daten angezeigt werden, die eigentlich erst zur Laufzeit von Anwendungen verfügbar wären. Dieser Webcast demonstriert einige Features, die das Leben von Designern wesentlich angenehmer machen.

    Teil 6: Deep Zoom für Fortgeschrittene

    Der Deep Zoom Composer ist nur ein möglicher Weg, um 'Deep Zoom'-Bilder zu erzeugen. Dies geht auch auf "programmiertechnischem" Weg und völlig automatisierbar. Darüberhinaus kann relativ einfach auf den Inhalt des fertigen Deep Zooms zugegriffen und dieser manipuliert werden. Das nötige Know-How wird in diesem Webcast vermittelt.

    Teil 7: Comics

    Wer liebt sie nicht: Comics. Wie leicht es ist, aus statischen Zeichnungen kleine Comic-Stories zu bauen, wird in diesem Webcast verraten.

    Teil 8: Games

    Innerhalb dieses Webcast wird ein kleines aber feines Spiel in Silverlight erstellt. Mehr wird noch nicht verraten.

    Teil 9: Grafik-Trickkiste

    Dieser Webcast gibt einen Einblick in verschiedene grafische Tricks und wie man diese mit Silverlight umsetzen kann.

    Teil 10: Datenbank-Frontends

    Die Anbindung von Datenbanken an Silverlight-Frontends ist recht unkompliziert: Mittels Webservices oder ADO.NET Data Services lassen sich vollständige Datenbanken sehr einfach integrieren. Dieser Webcast baut ein Datenbank-Frontend basierend auf diesen beiden Zugriffsmöglichkeiten.

     

    Druckbetankungen auf Channel9.msdn.com

     

    In diesem ersten Teil unserer Silverlight3-Serie "Druckbetankung - Die Show" geht es um Grundsätzliches, von den Voraussetzungen für Silverlight 3, über die Installation zu der neuen Features. Ausserdem installieren und zeigen ein paar Details der Blend 3 Preview, zum Beispiel die dort integrierte IntelliSense-Unterstützung.
    Alles zum Ausprobieren und Nachmachen, wie immer auf unterhaltsame Art präsentiert von Oliver Scheer und meiner Wenigkeit.

    Druckbetankung - Die Show -- Silverlight 3 Teil I

    Im zweiten Teil unserer Staffel Silverlight 3 der Serie "Druckbetankung - Die Show" (ihr seht, wir haben uns Gedanken gemacht, wie das richtige Wording aussehen soll (= ) seht ihr die Navigation Templates, die neu in Silverlight 3 sind. Navigation Templates vereinfachen das Konzept der Seitentransparenz in Silverlight, so dass einzelne Inhalte einer Silverlight-Applikation auch per URL angesteuert werden und von Suchmaschinen so direkt indiziert werden können. Wie das Ganze funktioniert und wo noch weitere Vorteile liegen erfahrt ihr im Video!

    Druckbetankung - Die Show -- Silverlight 3 Teil II

    Der dritte Teil unserer Silverlight 3 Staffel der Serie Druckbetankung befasst sich mit der Out-of-Browser-Funktionalität, die in Silverlight 3 neu hinzugekommen ist. Diese ermöglicht es dem User, eine Web-Silverlight-Applikation auf dem Desktop bzw. lokal auf dem PC abzulegen, und von dort wie gewohnt zu verwenden, ohne dass ein Browser involviert ist. Oliver Scheer und ich zeigen, wie man seine Applikation Out-of-Browser-Ready macht, und welche zusätzlichen Möglichkeiten der Programmierung dadurch möglich werden. Wir zeigen, wie man der Applikation beibringt zu wissen, ob sie im Browser oder lokal läuft und wie man den Onlinestatus überprüft.

    Druckbetankung - Die Show -- Silverlight 3 Teil III

    Im vierten Teil unserer Staffel Silverlight 3 der Serie "Druckbetankung - Die Show" erklären Oliver Scheer und ich das Thema Animation und Storyboarding in Expression Blend 3. Ausserdem kommt das Thema "Easing Functions" zur Sprache. Easing Functions erleichtern dank vorgegebener Bewegungsabläufe die natürliche Animation von Objektbewegungen.

    Druckbetankung - Die Show -- Silverlight 3 Teil IV

    Im fünften Teil der Staffel Silverlight 3 aus der Serie "Druckbetankung - Die Show" geht es um das Binden von Elementeigenschaften an die Werte der Eigenschaften anderer Elemente. Das Sogenannte Element-to-Element Binding ist dafür verantwortlich, dass man in Silverlight mit Hilfe eines Sliders beispielsweise die Darstellungsgröße eines Textes verändern kann. An einem praktischen Beispiel zeigen Oliver Scheer und ich wie diese Technik verwendet wird.

    Druckbetankung - Die Show -- Silverlight 3 Teil V

    In Teil sechs der Staffel Silverlight 3 aus der Serie "Druckbetankung - Die Show" dreht sich alles um die Plane Projection, die 3D-Projektion in Silverlight 3. Diese Projektion lässt sich sowohl in Expression Blend 3 verändern, als auch an Eingabefelder, beispielsweise Slider, binden und so in der Anwendung selber interaktiv verändern. Oliver Scheer und ich programmieren uns explorativ durch die Möglichkeiten der 3D-Projektion.

    Druckbetankung - Die Show -- Silverlight 3 Teil VI

    MSDN Solve CodeClips // www.msdn-solve.de

     

    Wie kann ich Untertitel in meinen Silverlight Player einbauen?
    In diesem CodeClip lernen Sie wie Sie eine eigene Klasse schreiben können, die Ihnen das anzeigen von Untertiteln ermöglicht.

    Wie kann ich in Silverlight (RSS) Feeds konsumieren und in meiner Anwendung anzeigen?
    In diesem CodeClip lernen Sie wie mit Hilfe der SyndicationFeed Klasse und dem Nutzen der DataContext Eigenschaft sehr einfach (RSS) Feeds konsumieren und anzeigen können.

    Wie kann ich Videos mit Hilfe von Streaming.live.com und Silverlight in einer bestehenden PHP, JSP oder ASP.NET Webseite anzeigen?
    In diesem CodeClip lernen Sie wie Sie mit Hilfe von Streaming.live.com und Silverlight Videos in Ihre bestehende Webseite einbinden können.

    Wie kann ich Bilder aus Flickr in einer PHP-Seite via Silverlight darstellen?
    In eine existierende PHP Seite soll eine graphisch ansprechende Image-Gallery mit visuellen Effekten eingebaut werden, die Bilder aus Flickr Anzeigt. Die Gallery basiert auf Silverlight und wird von der PHP Seite mit dem Thema der anzuzeigenden Bildern versorgt.

    Wie streame ich Videos in Silverlight mit den IIS Media Services?
    Es wird eine Basisinstallation des Windows Server 2008 Standard mit Hilfe des Web Platform Installers für die Nutzung der IIS Media Services konfiguriert. Anschließend wird ein Beispiel Video gestreamt und in Silverlight angebunden.

    Wie binde ich eine Silverlight Bildergallerie in eine PHP-Seite ein?
    In eine existierende PHP Seite soll eine graphisch ansprechende Image-Gallery mit visuellen Effekten eingebaut werden. Die Gallery basiert auf Silverlight und wird von der PHP Seite mit den anzuzeigenden Bildern versorgt.

    Wie greife ich auf Daten eines SAP-Systems in Silverlight zu?
    Es wird gezeigt, wie mithilfe der ADO.NET Data Servcies und LINQ to SAP auf Geschäftsdaten eines SAP-Systems in einer Silverlight-Anwendung zugegriffen werden kann. Exemplarisch werden die SAP-Daten in einer Listbox auf einer Silverlight-Seite ausgegeben.

    Wie erstelle ich einen Silverlight Client der Datenbankinhalte anzeigen und ändern kann durch Verwendung einer bestehenden WPF Anwendung? [MSDN Solve-CodeClip]
    Es soll ein Silverlight Client, der Datenbankinhalte anzeigen und ändern kann durch Verwendung einer bestehenden WPF Anwendung, erstellt werden.

    Wie verwende ich DeepZoom in Silverlight2? [MSDN Solve-CodeClip]
    Es wird die Deep Zoom Technologie anhand eines Showcases vorgestellt und anschließend ein erstes Deep Zoom Image mit Hilfe des Deep Zoom Composers erstellt und die einzelnen Bestandteile eines Deep Zoom Images erklärt.

    Wie zeige ich Silverlight Videos auf einer Webseite an? [MSDN Solve-CodeClip]
    Importieren, bearbeiten, kodieren und veröffentlichen von Videos mit dem Expression Encoder

    Wie verwende ich das StackPanel in Silverlight? [MSDN Solve-CodeClip]
    Controls sollen sich in einer Silverlight-Anwendung automatisch untereinander oder nebeneinander anordnen.

    Wie verwende ich das Slider Control in Silverlight? [MSDN Solve-CodeClip]
    Erstellen eines Slider Controls und behandeln von Ereignissen

    Wie verwende ich das ScrollViewer Control in Silverlight? [MSDN Solve-CodeClip]
    Es wird ein ScrollViewer Control erstellt und diesem ein Inhalt zugewiesen

    Wie verwende ich das RadioButton Control in Silverlight? [MSDN Solve-CodeClip]
    Es werden mehrere RadioButton Controls erstellt, gruppiert und ein EventHandler programmiert

    Wie verwende ich das ListBox Control in Silverlight? [MSDN Solve-CodeClip]
    Erstellen eines ListBox Control und verarbeiten von Ereignissen

    Wie verwende ich das Grid Control in Silverlight? [MSDN Solve-CodeClip]
    Es wird mit Hilfe des Grid Controls ein mehrspaltiges und mehrzeiliges Layout erzeugt

    Wie verwende ich das DatePicker Control in Silverlight? [MSDN Solve-CodeClip]
    Es wird ein DatePicker Control erstellt und bei Auswahl eines Datums, dieses über ein TextBlock Control ausgegeben

    Wie verwende ich das DataGrid Control in Silverlight? [MSDN Solve-CodeClip]
    Es wird eine Liste erstellt und diese anschließend an eine DataGrid zur Ausgabe gebunden

    Wie erstelle ich eigene Controls in Silverlight? [MSDN Solve-CodeClip]
    Eigene Controls in Expression Blend erstellen und verwenden. Mit Hilfe von Visual Studio öffentliche Eigenschaften zuweisen und diese in Expression Blend nutzen.

    Wie verwende ich das CheckBox Control in Silverlight? [MSDN Solve-CodeClip]
    Erstellen einer CheckBox Control und behandeln von Ereignissen

    Wie verwende ich das Calendar Control in Silverlight? [MSDN Solve-CodeClip]
    Es wird ein Calendar Control erstellt und bei Auswahl eines Datums, dieses über ein TextBlock Control ausgegeben

    Wie arbeite ich mit Text in Silverlight? [MSDN Solve-CodeClip]
    Verschiedene Eigenschaften des TextBlock-Elementes einsetzen und mit Hilfe des Run-Elementes einzelne Abschnitte innerhalb eines TextBlock-Elementes unterschiedlich formatieren.

    Wie kann ich mit Styles in Silverlight arbeiten? [MSDN Solve-CodeClip]
    Eigenschaften von Elementen einer Silverlight Anwendung zentral verwalten

    Wie arbeite ich mit Ressourcen in Silverlight? [MSDN Solve-CodeClip]
    Farben und Füllungen als Ressourcen speichern und nutzen

    Wie realisiere ich ein flexibles Layout Management mit Silverlight? [MSDN Solve-CodeClip]
    Es wird mit Hilfe von Grid, StackPanel und ScrollView Controls ein flexibles Layout in Silverlight erzeugt.

    Wie erstelle ich eine Webseite mit Silverlight 2? [MSDN Solve-CodeClip]
    Es wird in Visual Studio eine neue Silverlight Anwendung sowie eine passende Webseite erstellt und die zugehörigen Dateien erklärt.

     

    Externe Videos


    Für die Inhalte kann keine Garantie übernommen werden

    YourExpression.de (WMV-Dateien, mit rechter Maustaste “Speichern unter”)

    Video-Casts zu Silverlight und Datenbindung

    Silverlight: Architektur und Webservices (WMV, 30MB)

    Silverlight: und Data Services (WMV, 30MB)

    Silverlight Übersicht

    Die 8 goldenen Regeln des UI-Designs (LINK)

    Einführung in Silverlight 2.0 (WMV)

    Programmierung meets Design: Erzeugen von Objekten via Code (WMV)

    Einführung in Expression Web (WMV)

    Menüs erstellen mit Expression Web (PDF)

    Einführung in Expression Design (WMV)

    Die Pipetten in Expression Design (WMV)

    Einführung in Expression Blend - Teil A (WMV)

    Einführung in Expression Blend - Teil B (WMV)

    Expression Blend: Grundlagen von Styles (WMV)

    Expression Blend: Anpassen von Controls-Designs mit Control-Templates (WMV)

  • o-LIVE-r

    RSS Toolkit Update

    • 0 Comments

    Mein amerikanischer Kollege Dmitry Robsman hat in seinem Blog ein Update für das RSS Toolkit veröffentlich.

    Mit diesem Toolkit ist es möglich fremde RSS Feeds zu konsumieren und selber eigene Feeds zu publizieren. Wie in der letzten Version auch, stehen sämtliche Sourcen in Quellcode zur Verfügung.

    Ganz nebenbei wird demonstriert wie man eigene DataSourcen erstellt und diese "automatisch" bei der Auswahl von Datenquellen herangezogen werden können.

    Viel Spaß

  • o-LIVE-r

    Willkommen Webmatrix! Web-Entwicklung mit ASP.NET und PHP Kostenlos

    • 0 Comments

    Gestern Abend wurde auf dem amerikanischen Community Event Code Mash die finale Version von Webmatrix, dem neuen kostenlosen Webentwicklungswerkzeug von Microsoft vorgestellt.

    WebMatrix_bL

    Webmatrix umfasst den Webserver IIS Developer Express, das Web-Framework ASP.NET sowie die eingebettete Datenbank SQL Server Compact.

    Entwickler können innerhalb von Webmatrix wählen, ob Sie Ihre Webseiten auf mitgelieferten Templates aufbauen oder aber mit Hilfe eines der populären Open-Source-Frameworks starten möchten. Mit WebMatrix lassen sich sowohl ASP.NET- als auch PHP-Anwendungen programmieren, testen und bereitstellen.

    Über die bekannte Web-App-Gallery kann direkt aus Webmatrix heraus das passende ASP.NET oder PHP Framework installiert und konfiguriert werden. Dazu zählen unter anderem WordPress, Joomla! oder Drupal sowie DotNetNuke oder BlogEngine.NET auf Basis von ASP.NET.

    Microsoft WebMatrix hilft auch dabei, den passenden Web-Host zu finden. In der Web-Hosting-Galerie stehen entsprechende Provider zur Auswahl. Dank integrierter FTP-, FTPS- und WebDeploy-Technologie lassen sich die erstellten Dateien dann sicher und problemlos im Internet publizieren. Hosting-Provider wie die IPX Server GmbH, Quality Hosting GmbH und Strato AG bieten zum Launch spezielle Webmatrix-Hosting-Angebote an.

    Die Zeiten von ständigem Hin-und-Her Wechseln zwischen verschiedenen Applikationen zur Erstellung Ihres Webprojekts sind endlich vorbei! Mit Webmatrix erledigen Entwickler alle Aufgaben zentral: Editieren Ihrer Seiten, erstellen, bearbeiten und kontrollieren der Datenbank, optimieren der Seite für Suchmaschinen und Anpassen der Server Einstellungen.

    Sollten die Anforderungen steigen, können WebMatrix-Nutzer ihre Projekte problemlos auf Visual Studio übertragen. Ebenso einfach lässt sich auch eine relationale Datenbank einbinden: Per Mausklick können die Daten von SQL Server Compact auf SQL Server migriert werden.

    Die finale Version von Microsoft WebMatrix ist in deutscher Sprache verfügbar und steht hier zum kostenlosen Download bereit.

  • o-LIVE-r

    Channel 9: ASP.NET Extensions - Silverlight Media Player Control

    • 0 Comments

    Der absolut einfachste Weg ein Video auf seine eigene Webseite einzubauen geht ist das neue Silverlight Media Player Control aus den ASP.NET Extensions zu verwenden.
    Darüber hat man diverse Möglichkeiten, einen vordefinierten Player oder eine eigene Player-Darstellung zu verwenden und das Video seiner Wahl mit oder ohne Kapiteln ins Internet zu bringen. Dieses Video zeigt in 10 Minuten, wie es geht.
    Viel Spaß.


    ASP.NET Extensions: Silverlight Media Player Control

  • o-LIVE-r

    Channel 9: ASP.NET Dynamic Data Übersicht

    • 0 Comments

    Dieses Video gibt einen ersten Einblick in das neue Feature von ASP.NET. Dieses Feature ist derzeit Bestandteil der ASP.NET 3.5 Extensions, welche man sich von der Webseite www.asp.net herunterladen kann.


    ASP.NET Dynamic Data: 1 - Einführung
  • o-LIVE-r

    Windows Live Webcast Serie startet

    • 0 Comments

    An diesem Donnerstag, dem 7.12.2006, startet um 16 Uhr die Windows Live Webcast Serie. Hier kann man sich anmelden.

    Dieser Teil der Serie richtet sich an alle, absolut alle, die gerne wissen möchten, was die Windows Live Platform ist und welche Möglichkeiten es dort für Benutzer (und auch Softwareentwickler :-) ) gibt.

    Es handelt sich dabei um eine erste Einführung und zeigt, welche Funktionen über www.live.com zur Verfügung gestellt werden. Und was es für zusätzliche Live-Dienste gibt.

    In weiteren Episoden dieser Serie, wird gezeigt wie man selber Gadgets entwickeln kann. Und was sich hinter Virtual Earth, Windows Live Local und dem Windows Live Messenger verbirgt.

    Wer sich diesen Webcast LIVE :-) ansehen möchte, kann zur kostenfreien Anmeldung diesen Link verwenden. Nach der LIVE-Sendung wird es diese Aufzeichnung natürlich auch hier zum ansehen geben.

  • o-LIVE-r

    Windows 7 – Entwickeln mit dem Windows API Code Pack

    • 1 Comments

    Das Windows API Code Pack for Microsoft .NET Framework ist eine .NET-Bibliothek für die Nutzung einiger der neuen Windows 7-Features sowie Funktionen aus älteren Betriebssystemen. Diese Bibliothek beinhaltet Funktionen, die so heute noch in keinem .NET Framework enthalten sind. Die nächste Version des .NET Framework wird große Teile dieser Bibliothek übernehmen, allerdings dauert das noch eine Weile. Leider kann aber wegen des Open Source-Charakters momentan keine hundertprozentige Gewährleistung gegeben werden, dass die Bibliotheken im .NET Framework genauso aussehen werden, wie im Code Pack.

    Das tolle an diesen Bibliotheken ist, dass sie im Quellcode vorliegen und so von jedem erweitert werden können. Dadurch erhält man die Sicherheit, dass die eigenen Anwendungen auch noch mit späteren Versionen des .NET Framework funktionieren werden.

    Wo bekommt man das Code Pack her?

    Alle notwendigen Ressourcen können in einer einzelnen Datei heruntergeladen werden. Der Download ist hier verfügbar: http://code.msdn.microsoft.com/WindowsAPICodePack

    image

    Das Code Pack gibt es derzeit in der Version 1 und enthält die folgenden Bestandteile:

    • Windows 7 Taskbar Sprunglisten, Symboloverlays, Fortschrittsbalken, Tabbed Thumbnails und Thumbnail Toolbars.
    • Windows 7-Bibliotheken, bekannte Ordner, Nicht-Filesystem-Container.
    • Windows Shell Search API Support, eine Vielzahl von Shell-Funktionen inkl. Drag und Drop für Shell-Objekte (z.B. Dateien).
    • Explorer Browser Control.
    • Shell-Eigenschaften.
    • Windows Vista- und Windows 7-Dateidialoge, einschließlich benutzerdefinierter Steuerelemente.
    • Windows Vista und Windows 7 Task-Dialoge.
    • Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite und WIC sind derzeit nur teilweise unterstützt)
    • Sensor Platform APIs
    • Extended Linguistic Services APIs
    • Power Management APIs
    • Application Restart and Recovery APIs
    • Network List Manager APIs
    • Command Link Steuerelement und System-Symbole.
    • Shell Search API support.
    • Support für Direct3D- und Direct2D-Interoperabilität.
    • Support von Typographie und Schriftarten für DirectWrite APIs.

    Die Anforderungen des Code Pack

    • .NET Framework 3.5 SP1 Ist mindestens erforderlich
    • Diese Bibliothek adressiert Windows 7 RTM (bereits verfügbar für alle MSDN Subscriber), einige Features funktionieren allerdings auch auf älteren Windows Betriebssystemen.
    • DirectX Features benötigen das Windows SDK für Windows 7 RTM. Zusätzlich benötigen einige Direct3D-Beispiele das DirectX SDK (Version August 2009).

    Erstellen und Verwenden der Bibliothek

    Um die Bibliothek zu erstellen (ausgenommen die DirectX betreffenden Features), benötigt man Visual Studio 2008. Der gesamte Inhalt des Pakets „WindowsAPICodePack.zip“ sollte dafür in einen neuen Ordner entpackt werden. Darin enthalten ist die Datei „WindowsAPICodePack.sln“, die die gesamte Lösung beinhaltet.

    Für das Erstellen der DirectX-Features wird“DirectX.sln“ innerhalb des DirectX-Verzeichnisses benötigt. Eine genauere Beschreibung der Anforderungen ist in der einer Hilfedatei im selben Ordner beschrieben

    Welche Beispiele sind im Code Pack enthalten?

    Das Code Pack beinhaltet neben den Bibliotheken auch einige Beispielanwendungen, die sofort lauffähig sind, um die Verwendung erfolgreich zu demonstrieren. Jedes Beispiel ist sowohl in C# also auch in Visual Basic .NET verfügbar.

    Konkret enthalten sind Beispiele für Explorer-, Netzwerk-, Ribbon-, Startleiste-, Sensor- und Dialog-Bibliotheken.

    image

     


    Get Microsoft Silverlight
  • o-LIVE-r

    Windows 7 – Entwickeln mit dem Windows Software Development Kit

    • 0 Comments

    Microsoft bringt für jede Version von Windows ein besonderes Kit für die Entwicklung von Anwendungen heraus. Dieses steht Interessierten kostenfrei zur Verfügung: Das Windows Software Development Kit.

    Beim Microsoft Windows SDK handelt es sich um einen Satz von Tools, Codebeispielen, Dokumentationen, Compilern, Headern und Bibliotheken, mit denen Entwickler Anwendungen erstellen können, die unter Windows-Betriebssystemen mit systemeigenen (Win32) oder verwalteten (.NET Framework) Programmiermodellen ausgeführt werden.

    Natürlich gibt es dieses SDK auch für Windows 7. Je nach Funktionsumfang ist es zwischen 300 KB und 4 GB groß. Daher kann die Installation je nach Netzwerkverbindung auch mal etwas länger dauern. Im SDK findet sich für jeden Entwickler einiges an hilfreichen Codebeispielen und Werkzeugen für den eigenen Werkzeugkasten.

    Windows7SDK

    Hier an der Stelle noch mal der sehr wichtiger Hinweis: Das Windows SDK ist ein Kit an Software-Entwicklungshilfen. Es ist teilweise sehr komplex und umfangreich. Da die Dokumentation teilweise direkt von den Entwicklern kommt, sind alle Bestandteile ausnahmslos im Englisch gehalten. Wäre es ganz einfach, dann könnte es ja jeder ;).

    Möchte man sehen, welche Version des SDKs für welches Betriebssystem installiert ist, kann man das mit dem Configuration Tool ermitteln und einstellen. Ein wichtiger Einstiegspunkt ist die Dokumentation die mitgeliefert wird.

    Wer behauptet, dass sich von Windows Vista zu Windows 7 nicht viel getan hat, der darf sich gerne die folgende Liste mit neuen und erweiterten APIs auf der Zunge zergehen lassen:

    • Active Directory Rights Management Services
    • Biometric Service API
    • COM
    • Core Windows
    • Enhanced Storage
    • Enhanced Taskbar
    • Event Tracing for Windows (ETW)
    • Extended Linguistic Services
    • File Server resource Manager
    • Hardware Counter Profiling
    • Hyper-V
    • Internet Explorer
    • Location API
    • Mobile Broadband
    • Native Wifi
    • Network Share Management
    • Packaging
    • Parental Controls
    • Peer Distribution
    • Performance Counters
    • Power Management
    • Scenic Animation
    • Sensor API
    • Virtual Disk Service
    • Virtual Hard Disk
    • Volume Shadow Copy Service
    • Windows Connect Now
    • Windows Error Reporting
    • Windows Event Log
    • Windows Gadget Platform
    • Windows Installer
    • Windows Scenic Ribbon
    • Windows Touch
    • Windows Troubleshooting Platform
    • Windows Web Services
    • XPS Documents

    Einige davon, definitiv nicht alle, werden wir hier noch genauer vorstellen.

    Was befindet sich im SDK?

    Im SDK befinden sich Beispielanwendungen auf „Hallo Welt“-Niveau für erste Schritte in bestimmten Bereichen bis hin zu sehr komplexen Beispielen, die die Technologien tiefer demonstrieren.

    Tools für Managed Code

    • ASPNet_merge.exe (ASP.NET Merge Tool für Assemblies)
    • SqlMetal.exe (Code Generation Tool für SQL Tabellen in .NET-Klassen)
    • Xsltc.exe (XSLT Compiler für XSLT-Style Sheets in Assemblies für eine bessere Performance)

    Tools für Native (Win32 und COM) Entwicklung

    • BETest.exe (VSS Backup und Restore Test Tool)
    • Checkv4.exe (IPv6 Compatibility Check Tool, Hilft IPv4-Code aufzuspüren und gibt Tipps für Anpassung auf IPv6)
    • CTRPP.exe (Counter Pre-processor Tool, Performance Counter Generator)
    • Ecmangen.exe (ETW Manifest Generation Tool, Event Tracing für Windows)
    • FiltDump.exe (IFilter Dump)
    • FiltReg.exe (IFilter Registy)
    • GC.exe (SAPI Grammar Compiler, Speech Application Programming Interface, erzeugt Gramatikassemblies aus XML-Dateien)
    • Genmanifest.exe (Generate Manifest Tool)
    • IFiltTst.exe (IFilter Test Tool)
    • Midl.exe (MIDL Compiler, erzeugt eine Bibliothek für Zugriff auf Interface Definition aus der COM-Welt)
    • Sporder.exe (Protocol Reorder Tool)
    • Topoedit.exe (Topology Editor für die Media Foundation)
    • UICC.exe (Ribbon Markup Compiler)
    • Vshadow.exe (VShadow Tool, erzeugt und verwaltet Volumenschattenkopien)
    • VSSAgent.exe VSDiagview.exe (VSS Diagnostic Tools)
      VSSTrace.exe (VSSTrace Tool)
    • Vstorcontrol.exe (VSS Sample Provider Tool)
    • VSWriter.exe (VSS Test Writer Tool)
    • WsdCodeGen.exe (Web Services on Devices Code Generator)
    • Wsddebug_client.exe, Wsddebug_host.exe (Web Services on Devices Debugging Tools)
    • WSTraceDump.exe (Web Services Trace Dump Tool)
    • WSUtil.exe (Web Services Compiler Tool)

    Tools für beide Welten

    • AccEvent.exe (Accessible Event Watcher, prüft Anwendungen auf Accessibility-Funktionalitäten)
    • AppVerif.exe (Application Verifier)
    • Bind.exe (Windows NT Image Binder)
    • DeviceSimulatorForWindowsSideShow.msi (Device Simulator for Windows SideShow)
    • FileFormatVerifier.exe (File Format Verifier Tool für registrierte Dateiendungen)
    • FTQuery.exe (FTQuery Tool)
    • Inspect.exe (Inspect Objects Tool)
    • MSIVal2.msi (MSIVal2 Tool, Konsistenzprüfung)
    • Orca.msi (Installer for Orca, Windows Installer Administration für eigene Installer)
    • PKTExtract.exe (Public Key Token Extractor Tool)
    • SDCatalog.Exe (SDCatalog Tool für Windows Troubleshooting Packs)
    • SDMC.Exe (SDMC Tool für Windows Troubleshooting Pack Designer)
    • SetReg.exe (SetReg Tool, Registry für Zertifikate)
    • TSPDesigner.exe (Windows Troubleshooting Pack Designer, erzeugt Windows Troubleshooting Packs)
    • UuidGen.exe (UUID Generator Tool, erzeugt Universal Unique Identifiers, auch als GUIDs bekannt)
    • VirtualLightSensor.exe (Virtual Light Sensor Tool)
    • WinDbg.exe (Debugging Tools for Windows)
    • wpt-x86.msi, wpt-x64.msi, wpt-ia64.msi (Windows Performance Toolkit)
    • XPSAnalyzer.exe (XPS Analyzer)

    Weitere Werkzeuge, die man aus dem SDK nach installieren kann

    • Background Intelligent Transfer Service (BITS)
    • CAPICOM (Bietet kryptografische und andere sicherheitsrelevante Dienste an)
    • Debug Help Library (DbgHelp, Treiber- und Anwendungsdebugger)
    • Group Policy Management Console (GPMC)
    • Rights Management Services (RMS)
    • Microsoft Management Console (MMC)
    • Windows InstallerWindows Management Instrumentation (WMI)
    • Windows Remote Management (WinRM)
    • Windows Update Agent (WUA)
    • Real-Time Communications (RTC)
    • Windows Server Update Services (WSUS)

    Das Windows SDK wird pro Version übrigens mehr als eine Millionen mal heruntergeladen. Das Team besteht aus 25 Personen und wer könnte da besser das Video des Tages liefern als die Program Managerin Lori Pearce

    Get Microsoft Silverlight

    Weiterführende Links

    Teamblog der Windows SDK Entwickler: http://blogs.msdn.com/windowssdk/

    Download-Link für das Windows 7 SDK: http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en

  • o-LIVE-r

    Coole Silverlight Demo (inkl. Code) Website

    • 0 Comments

    Unter www.nokola.com gibt es viele spannende Silverlight Demos einschließlich Code zum Download.

    Zum Beispiel:

    • 25 Uralt-Spiele
    • Raytracing in Silverlight
    • Diverse Controls
  • o-LIVE-r

    Die Ribbon für WPF in eigene Anwendungen einbauen

    • 1 Comments

    Die Ribbon ist eine sehr beliebte neue Möglichkeit für die Steuerung von Anwendungen. Jeder Entwickler kann diese nun in seine bestehenden Anwendungen integrieren. Und das ganze ohne viel Aufwand. Microsoft stellt die Ressourcen dafür kostenfrei zur Verfügung.

    Schritt 1 : Herunterladen & Installieren

    Alle Ressourcen für das Ribbon können über das Microsoft Download Center heruntergeladen werden. Dort sucht man einfach nach „Ribbon for WPF“. Der Download beinhaltet einen Installer, der automatisch Projektvorlagen in Visual Studio 2010 für Visual Basic .NET und Visual C# einbindet.

    Schritt 2: Visual Studio öffnen und einbauen

    Um eine neue Anwendung basierend auf der WPF Ribbon bauen zu erstellen, wählt man bei der Anlage eines neuen Projektes einfach die Vorlage „WPF Ribbon Application“ aus.

    clip_image002

    Anschließend hat man folgende Ansicht in Visual Studio.

    clip_image004

    Visual Studio 2010 baut automatisch eine lauffähige Ribbon-Anwendung.

    Schritt 3: Erweitern

    Mit diesen paar Zeilen in XAML (Extensible Application Markup Language) lässt sich die Ribbon an eigene Bedürfnisse anpassen.

    <ribbon:Ribbon x:Name="Ribbon">

    <ribbon:Ribbon.ApplicationMenu>

    <ribbon:RibbonApplicationMenu SmallImageSource="Images\SmallIcon.png">

    <ribbon:RibbonApplicationMenuItem Header="Hello Ribbon" x:Name="MenuItem1"

    ImageSource="Images\LargeIcon.png" />

    </ribbon:RibbonApplicationMenu>

    </ribbon:Ribbon.ApplicationMenu>

    <ribbon:RibbonTab x:Name="HomeTab" Header="Home">

    <ribbon:RibbonGroup Header="Hinzufügen">

    <ribbon:RibbonButton LargeImageSource="Images\PlusBlue.png" Label="Benutzer" />

    <ribbon:RibbonButton SmallImageSource="Images\PlusGrey.png" Label="Gruppe" />

    <ribbon:RibbonButton SmallImageSource="Images\PlusGreen.png" Label="Ordner" />

    <ribbon:RibbonButton SmallImageSource="Images\PlusOrange.png" Label="Akte" />

    </ribbon:RibbonGroup>

    <ribbon:RibbonGroup Header="Auswahl">

    <ribbon:RibbonButton LargeImageSource="Images\Sort.png" Label="Sortieren" />

    <ribbon:RibbonButton LargeImageSource="Images\RefreshBlue.png" Label="Aktualisieren" />

    </ribbon:RibbonGroup>

    </ribbon:RibbonTab>

    ….

    </ribbon:Ribbon>

    Visual Studio 2010 bietet allerdings auch die Möglichkeit, das ganze über die Toolbox via Drag & Drop duchzuführen.

    clip_image006

     

    Der Beweis als Video:

    Get Microsoft Silverlight

     

    Weitere Links zum Thema:

    Mehr Beispiele für schnelles, produktives Entwickeln mit Windows 7 gibt es hier
    http://msdn.microsoft.com/de-de/windows/ff944344.aspx

    Microsoft Download Center
    http://www.microsoft.com/downloads/de-de/

    Microsoft Ribbon for WPF
    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2BFC3187-74AA-4154-A670-76EF8BC2A0B4&displaylang=en

    Visual Studio 2010 Express Edition
    http://www.microsoft.com/germany/express/



  • o-LIVE-r

    Windows Live / http://www.live.com

    • 0 Comments
    Was ist das eigentlich?

    Die Webseite die sich unter http://www.live.com präsentiert, ist DIE Homepage für den Websurfer, der sich seinen Inhalt gerne selber zusammen setzt und nicht vordefinierte fixe Seiten betrachten möchte.

    Einfache, strukturierte Suche mit völlig neuen Features

    Für die Internetsuche bietet Live.com DEN Einstieg. Wenn man dort nach einen bestimmten Begriff sucht, bekommt man dort nicht einfach eine Liste mit den ersten 25 oder 50 Ergebnissen von 1.235.000 gefunden Begriffen. Man bekommt dort eine Liste die man bis zum Ende durchlaufen kann ohne auf einen Link zu klicken der einen zu den nächsten 25 Ergebnissen bringt. Die Liste lädt sich dynamisch im Hintergrund bei Bedarf nach (nach bester Atlas Manier). Zusätzlich sind die Ergebnisse nach Kategorien geordnet, in deutschen Version: Web, News, Rss-Quellen und Wissenschaftlich. Wenn man seine persönlichen Einstellungen auf en-us, also Englisch-Vereinigte Staaten umstellt, erhält man noch mehr Kategorien. Die deutschen werden auch später erweitert, allerdings ist der Dienst gerade noch im Beta-Stadium.

    Zusammenstellen eigener Nachrichtenquellen und Gadgets

    Zusätzlich kann man auf Live.com seine eigenen Nachrichtenquellen und Gadgets nach eigenen Wünschen zusammenstellen. Dabei kann man jeden beliebgen Nachrichtenfeed abonnieren und integrieren und aus einer Vielzahl von Gadgets wählen. Kleiner Wink mit dem Zaunpfaul, es gibt derzeit einen tollen Entwicklerwettbewerb für Gadgets mit vielen Preisen, mehr dazu unter www.microsoftgadgets.de.

    Atlas/Ajax Style pur

    Die Webseite Live.com verhält sich dabei, ganz nach Atlas-Stil, völlig dynamisch und lässt sich ähnlich wie eine Desktopanwendung verwenden, d.h. Funktionalitäten wie Drag&Drop, Texteditieren durch Doppelklicken und vieles mehr sind auf der Webseite möglich, ohne das ein lästiges Neuladen der gesamten Seite erforderlich ist.

    Die Anpassungen die man an seiner Live.com-Seite getätigt hat, werden gespeichert und können von jeden beliebigen Rechner, nach Anmelden, abgerufen werden.

    Windows Live bildet dabei nur den Startpunkt für viele weitere Services die hier in Kürze präsentiert werden.

    Mehr dazu ... bald, sehr bald :-)

    Weitere Infos gibt es hier: http://www.microsoft.com/germany/msdn/live/

    Schöne Grüße
    Oliver

  • o-LIVE-r

    Der neue Yahoo! Messenger für Windows Vista

    • 1 Comments

    Yahoo!'s nächster Messenger wurde gerade auf der CES in Las Vegas vorgestellt und ... wow. Vollständig neu entwickelt auf dem .NET Framework und basierend auf der WPF (Windows Presentation Foundation), sieht er echt sehr, sehr gut aus. Er kommt zusätzlich mit einem Sidebar Gadget daher.

    Mehr Infos und ein Video über die neuen Features gibt es hier.

  • o-LIVE-r

    Windows Sidebar Gadgets, Silverlight und 64-Bit Probleme

    • 0 Comments

    Als Fan von Windows Sidebar-Gadgets stößt man unter 64-Bit-Versionen von Windows schnell auf bestimmte Probleme. Dieser Blogeintrag beschreibt, wie man als Benutzer und Entwickler am besten damit umgehen kann.

    Grundsätzlich sind Gadgets (bzw. Miniaturanwendungen) nicht anderes als HTML-Anwendungen. Damit die Sidebar diese Anwendungen darstellen kann, wird der installierte Internet Explorer von Windows verwendet. Auf einem 64-Bit System ist dies automatisch der Internet Explorer in der 64-Bit Version. Dies gilt explizit nur für die Sidebar.

    Klickt man auf einen Link in einer Email, oder ruft auch sonst irgendeinem Grund den Internet Explorer auf, so startet standardmäßig der Internet Explorer in der 32-Bit-Version. Nachteile entstehen dem Benutzer dadurch absolut nicht. Einzige Ausnahme bildet hier die Sidebar, diese verwendet automatisch den 64-Bit Internet Explorer, wenn man mit einer 64-Bit Version von Windows arbeitet.

    Das hat nun zur Folge, dass Sidebar-Gadgets auch die 64-Bit-Variante verwenden. Leider stellen die wenigsten Hersteller von Browsererweiterungen ihre Plug-Ins in 32- und 64-Bit-Versionen zur Verfügung. Ganz ehrlich, es gibt quasi fast keine 64-Bit-Erweiterungen für 64-Bit Browser. Das liegt vielleicht unter anderem daran, dass außer Microsoft kein Browserhersteller aktuell eine 64-Bit Version eines Browsers für Windows geliefert hat. Weder Google Chrome, noch der Firefox, stehen in einer 64-Bit Version für Windows 64-Bit-Versionen zur Verfügung.

    Silverlight und Flash stehen ebenfalls nicht in 64-Bit-Version zur Verfügung. Sie lassen sich dennoch ohne Probleme auf einem 64-Bit-System installieren, keine Sorge. Alles läuft wie gewohnt. Bis auf die Sidebar.

    Hat man nun eine Windows 64-Bit Version und verwendet ein Gadget, das auf Flash oder Silverlight basiert bekommt man die Gadgets wie auf dem folgenden Bild dargestellt:

    image
    Ich habe hier testweise das Channel9-Gadget verwendet.

    Wie kann man nun dieses Problem beheben?

    Die Sidebar.exe, die Anwendung die für die Darstellung der Gadgets zuständig ist, gibt es auch in zwei Versionen: 32- und 64-Bit.

    image

    Einmal im Ordner C:\Program Files\Windows Sidebar.

    image

    Und ein weiteres Mal im Ordner C:\Program Files (x86)\Windows Sidebar.

    Um nun seine Silverlight- oder Flash-Gadgets in auf einem 64-Bit System darstellen zu können muss lediglich die 32-Bit-Variante von sidebar.exe beim Starten von Windows aufgerufen werden. Dies geschieht am besten über die Autostart-Funktion von Windows.

    Einfach einen Shortcut in den Order C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup hinzufügen, der die Siderbar.exe aus dem Ordner: C:\Program Files (x86)\Windows Sidebar\sidebar.exe verlinkt.

    Anschließend wird die Sidebar im 32-Bit-Modus gestartet und verwendet den Internet Explorer in der 32-Bit-Version.

    image
  • o-LIVE-r

    Visual Studio 2010 … Anwendungen entwickeln mit schicken Icons

    • 0 Comments

    Ich bin gerade auf etwas gestossen, das mein Entwicklerherz doch sehr erfreut hat.

    Für ansprechende Anwendungen benötigt man auch ansprechende Symbole. Und da habe ich erst an den all möglichen Orten gesucht, bis ich darauf gestossen bin, daß Visual Studio 2010 Icons direkt mitliefert. Nur so richtig draufgestossen wird man nicht.

    Im Ordner C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033 befindet sich eine Datei namens ”VS2010ImageLibrary.zip”. Diese Datei hat es im wahrsten Sinne in sich. Nämlich ein Haufen an schicken Symbolen für die unterschiedlichsten Zwecke und Auflösungen.

    image

    Also … ich muss als Entwickler keine Icons designen Zwinkerndes Smiley

    Viel Spaß,
    Der Oliver



  • o-LIVE-r

    Silverlight Anwendung noch und nöcher!!!

    • 0 Comments

    Jetzt wo die API von Silverlight 1.0 mit dem RC fest ist, spriessen immer mehr Anwendungen aus dem Boden. Ich persönlich komme gerade selber nicht mehr ganz nach, daher bin ich froh, das Tim Sneath diese Liste erstellt hat.

    2D Physics Engine, Amazon Search Visualization, Ant Attack, AOL Social Mail Gadget, Beatboxing, Bubble Factory, Bubblemark, Color Picker, Comic Book Viewer, Destroy All Invaders, Digger, Discovery Channel Never Miss TV, DotNetNuke Video Module, Dr Popper, EuroJobWeb, Flowers-For-You, Glyph Map, GOA WinForms Demo, Grand Piano, Infragistics Controls Demo, InkPresenter, JavaScript / .NET Chess, JellyGraph, Khet, Laugh-o-Sphere, Layout Controls, Line Graph, Major League Baseball, Michael’s Journal, Monotone, Nibbles Tutorials, Office Ribbon, Popfly, Python Console, Reflection Builder, Reflector for Silverlight, ReMIX07 Tokyo, Roxio Buzz, Silverlight Airlines Demo, Silverlight Chess Game Replay, Silverlight Mind Map, Silverlight Pad, Silverlight Rocks, SilverNibbles, Skinkers LiveStation, Sprawl, Surface Prototype, Telerik RadControls 3D Cube, Vertigo Flight Simulator, XPS Viewer, Zero Gravity

    Und genau wie Tim, weiß ich von noch viel mehr Anwendungen, die mit dem offiziellen Launch bzw. mit der XTOPIA einhergehen werden. Habe sogar an einigen direkt mitarbeiten dürfen, bzw. beratend zur Seite gestanden.

  • o-LIVE-r

    Vogelperspektive in Deutschland verfügbar

    • 1 Comments

    Unglaublich, aber wahr. Die Welt aus der Vogelperspektive erleben bei Virtual Earth (http://local.live.com)

    Aus meinem Fenster hängt eine Deutschland-Fane :-)

     

    Die folgenden Städte sind schon verfügbar:

    Aalen, Aschaffenburg, Augsburg, Baden-Baden, Bamberg, Bayreuth, Binz, Brandenburg, Chemnitz, Cottbus, Dessau, Dresden, Erfurt, Erlangen, Freiburg im Breisgau, Gera, Goppingen, Goerlitz, Halle, Hanau, Heilbronn, Ingolstadt, Jena, Karslruhe, Kempten (Allgaeu), Konstanz, Landshut, Leipzig, Lubeck, Ludwigsburg, Magdeburg Mannheim, Munchen, Neumeunster, Nurenburg and Fuerth, Offenburg, Pforzheim, Plauen, Potsdam, Reutlingen, Rosenheim, Rostock, Saarbruecken, Sassnitz, Schwaebisch Gmuend, Sindlefingen, Speyer, Stralsund, Stuttgart, Trier, Teubingen, Ulm, Villingen-Schwenningen, Waiblingen, Weimar, Wolfsburg, Wuerzburg.

  • o-LIVE-r

    Deep Zoom Composer und das MultiScaleImage

    • 0 Comments

    Mit Deep Zoom wird in Silverlight die Technologie bezeichnet, die es erlaubt sehr große, hochauflösende Bilder und Bildersammlungen zu betrachten und mit diesen zu arbeiten. Die Betonung liegt hier wirklich auf sehr, sehr, sehr große Bilder und Bildersammlungen. Normalerweise dauert es lange viele hochauflösende Bilder über das Internet zu übertragen. Zusätzlich sind diese Bilder oft nur statisch eingebunden in eine Webseite eingebunden, d.h. sie können nicht einfach vergrößert, verkleinert und leicht bewegt oder interaktiv verwendet werden.

    Genau das ermöglicht Deep Zoom. Mittels des Expression Deep Zoom Composers können Bilder beliebig angeordnet und aus verschiedenen Zoomstufen sehr schnell betrachtet werden. Dabei wird sich dem Trick bedient, dass ein großes Bild in verschiedenen Auflösungen in jeweils viele kleine Teile sogenannte Kacheln zerlegt werden, wie es bereits diverse andere Anwendungen, wie z.B. Virtual Earth, machen. Allerdings ist der Aufwand zum Zerlegen dieser großen Bilder in viele kleine Einzelbilder sehr aufwendig und Zeitintensiv. Hier kommt genau der Deep Zoom Composer ins Spiel, der diese Aufgabe übernimmt.

    Das Ergebnis des Expression Deep Zoom Composer ist eine Sammlung von Bildern und Informationsdateien, die mit Hilfe des MultiScaleImage-Steuerelementes von Silverlight 2 angezeigt und gesteuert werden können. Das MultiScaleImage-Element ermöglicht es, das der Benutzer diese Bilder sehr interaktiv, z.B. durch Mausbewegung oder Tastatureingaben, steuern kann. Dies geschieht extrem schnell, da nicht alle Bilddaten sofort sondern nur bei tatsächlichen Bedarf geladen werden. Der aktuelle „Bedarf“ ermittelt sich aus der aktuellen Zoomstufe und des sichtbaren Bereichs. Werden alle Bilder der Sammlung gleichzeitig angezeigt, kann dies nur geschehen in dem alle Bilder relativ klein und damit nicht hochauflösend dargestellt werden (Abbildung 7.1).

    image

    Abbildung 7.1: 15 Bilder nebeneinander aufgereiht. Es werden nur Daten geladen die für diese Zoomstufe benötigt werden. Hochauflösende Detaildaten fehlen hier völlig.

    Deep Zoom beinhaltet einen Mechanismus der je nach Zoomstufe den betrachteten Ausschnitt nach lädt. Dazu muss eine vorbereitete Sammlung von Bildern vorliegen, die vorher mit dem Expression Deep Zoom Composer erstellt wurde. Diese speziell aufbereiteten Bilder bestehen aus einzelne Kacheln die nach Bedarf nachgeladen werden und an sich sehr klein sind. Wäre dies nicht der Fall müsste immer das gesamte Bild nachgeladen werden und der Anwender müsste lange warten.

    image

    Abbildung 7.2: Zwei Teilbilder aus der gleichen Sammlung, nur sehr stark herangezoomt. Es werden nur die Detailinformationen geladen die auch darstellbar sind.

    In dem Moment in dem gezoomt wird, wird das aktuelle Bildmaterial zunächst vergrößert und erscheint so lange bis die Detailbilder nachgeladen wurden etwas verschwommen. In dem Moment in die Daten angekommen sind, wird sanft übergeblendet.

    Expression Deep Zoom Composer

    Der Expression Deep Zoom Composer ist eine Anwendung die vom Expression Studio Team entwickelt wurde und sich der Seadragon-Technologie bedient. Seadragon wurde von den Microsoft Research Live Labs entwickelt und fliest in diverse Microsoft Projekte ein, z.B. Silverlight und PhotoSynth (http://labs.live.com/photosynth).

    Der Deep Zoom Composer konvertiert normale und hochauflösende Bilder und Bildersammlungen in sogenannte Deep Zoom Sammlungen, die sich mittels des Silverlight-Steuerelement MultiScaleImage anzeigen und steuern lassen.

    Unterschied Deep Zoom Bild und Sammlung erklären

    image

    Abbildung 7.3: Das Startlogo von Deep Zoom

    Beim Starten der Anwendung hat man im Start-Dialog direkt die Möglichkeit auf bestehende Projekte zuzugreifen oder ein neues Projekt zu beginnen.

    image

    Abbildung 7.4: Start-Dialog des Expression Deep Zoom Composer

    Erstellen einer Deep Zoom Sammlung

    Der Expression Deep Zoom Composer ist sehr einfach aufgebaut. In nur drei Schritten kann damit in kürzester Zeit eine Deep Zoom Sammlung erstellt werden, die dann mit Silverlight und dem MultiScaleImage angezeigt werden kann.

    Anlegen eines neuen Projektes

    Zum Erstellen einer neuen Deep Zoom Sammlung wird lediglich ein neues Projekt benötigt. Dieses wird über FileàNew Project angelegt.

    image

    Abbildung 7.5: Anlegen eines neuen Projektes

    Drei Schritte zum fertigen Bild

    Der erste Schritt besteht darin, seine eigenen Bilder zu importieren (Import. Der zweite Schritt erlaubt das Arrangieren (Compose) seiner eigenen Bilder in verschiedenen Ebenen (Layern). Im letzten Schritt wird das aktuelle Projekt in eine Deep Zoom Sammlung exportiert (Export).

    image

    Abbildung 7.6: Die einzelnen Schritte im Deep Zoom Composer

    Diese drei Schritte werden, wie in Abbildung 7.6 zu sehen ist, über eine Art Karteireiter gesteuert.

    1. Schritt: Import

    2. Schritt: Compose

    3. Schritt: Export

    Schritt 1: Importieren seiner eigenen Bildern

    Über Add Image im ersten Karteireiter können beliebig viele Bilder importiert werden. Derzeit werden die folgenden Datei-Formate unterstützt: tiff, tif, jpg, bmp und png Je nach Anzahl und Größe der Bilder dauert dieser Vorgang einen kleinen Moment

    image

    Abbildung 7.7: Importieren der Bilder

    Anschließend kann man die importierten Bilder in einer übersichtlichen Liste betrachten und gegebenenfalls wieder entfernen. Dort sieht man ebenfalls genau die Dimensionen und physikalische Größe der Bilder.

    image

    Abbildung 7.8: Die importierten Bilder in der Übersicht

    Bilder Galerie
    Bilder Vorschau
    Schritt 2: Arrangieren der Bilder

    Im zweiten Reiter (Compose) kann man die importierten Bilder per Doppelklick auf der Arbeitsfläche einfügen.

    Layout-Werkzeuge

    Wenn die gewünschten Bilder eingefügt sind kann man diese über die Anordnungswerkzeuge im unteren Bereich der Anwendung aneinander verschieben und aneinander ausrichten.

    image

    Abbildung 7.9: Werkzeuge zum Arrangieren der Bilder.

    Die Werkzeuge zum Arrangieren der Bilder umfassen neben dem Selektionspfeil zu Auswählen von einzelnen oder mehreren Bildern, auch zwei Lupen. Mit Hilfe der beiden Lupen kann in das Bild hinein und wieder heraus zoomen. Zu Beginn befindet man sich in der obersten Zoomebene. Wenn in dieser Ansicht Bilder einfügt, befinden diese sich zusammen in genau dieser Zoomebene. Zoomt man in das Bild weiter hinein oder heraus, geht man entsprechend auf eine andere Zoomebene. Werden dort nun weitere Bilder eingefügt, befinden diese sich wiederum in einer eigenen Zoomebene.

    Die weiteren Werkzeuge erlauben das vertikale und horizontale Ausrichten der Bilder aneinander und das gleichmäßige Verteilen der Bilder auf der Arbeitsfläche.

    - Align Left

    - Align Center

    - Align Right

    - Align Top

    - Align Middle

    - Align Bottom

    - Distribute Horizontally

    - Distribute Vertically

    - Make Same Width

    - Make Same Height

    Im folgenden Bild (Abbildung 7.10) befinden sich in der aktuellen Ansicht acht Bilder. Auf einem dieser Bilder befindet sich eine kleine Lupe. Diese Lupe gibt an das sich dort eine weitere Zoomebene befindet und dort weitere Bilder hinterlegt sind.

    image

    Abbildung 7.10: Die Ansicht der Sammlung in der vollen Ansicht, alle Elemente sind in der obersten Zoomstufe zu sehen.Zusätzlich sieht man links in der Mitte eine kleine Lupe, die auf weitere Zoomebenen und Bilder hinweist.

    Mit der linken Lupe der Werkzeugleiste lässt sich beliebig in die Sammlung hinein zoomen. Wenn man nun die Lupe oder einen anderen Bereich selektiert, kann in eine tiefere Zoomstufe wandern und dort entweder bereits abgelegte Bilder betrachten oder neue Bilder einfügen. Der Zoomtiefe ist dabei (fast) keine Grenze gesetzt.

    image

    Abbildung 7.11: Innerhalb eines Bildes der Gesamtansicht wurde ein weiteres Bild eingefügt.

    Alle Bilder - Reiter

    This section of the image gallery displays all of the images imported to the project. The images that are being used in the composition have a lower opacity. In the image to the left the top images is transparent meaning it is currently being used in the composition. The bottom image on the other hand is not.

    Ebenen Sicht - Reiter

    The second tab displays only the images used in the composition. The image on the left shows the Layer View tab. The user can use the arrow buttons to change the z order of the images on the artboard.

    Visibility

    The eye icon represents the visibility property set for each image on the artboard. This visibility setting can be set in the Layer View Tab.

    Arbeitsbereich

    The user can create and edit compositions on the artboard in the Compose workspace. This workspace provides the user with a design area with the ability to position and arrange the images, also has a basic set of tools (selection, pan, zoom), as well as basic alignment features (align & distribute). The images in the composition are added to the artboard by dragging/dropping via the image gallery. The user has the ability to arrange elements on the artboard and be able to view the contents through a keyhole navigator and modify with three different tools. The user is also able to manipulate the images with adorners and modify the layout/alignment with the layout buttons described below.

    Schritt 3: Exportieren der Deep Zoom Sammlung

    Im dritten Reiter Export kann die erstellte Sammlung als Deep Zoom Bild oder Sammlung exportiert werden.

    Vorschau / Output Preview

    Innerhalb des Arbeitsbereichs wird die erstellte Sammlung in einer Vorschau präsentiert.

    Einstellungen / Settings

    Der Benutzer hat dieser Stelle die Möglichkeit dem Deep Zoom Bild einen Namen zu geben. Zusätzlich kann er hier festlegen ober er das Bild bzw. die Bilder als Sammlung exportieren möchte.

    image

    Abbildung 7.12:

    image

    Abbildung 7.13:

    image

    Abbildung 7.14:

    image

    Abbildung 7.15:

    Die Projekt Struktur des Deep Zoom Composer

    Jedes Deep Zoom Composer Projekt hat eine festgelegte Struktur und besteht aus einer Reihe von Elementen.

    image

    Abbildung 7.16: Die Projektstruktur des Deep Zoom Composer

    Im Folgenden werden die einzelnen Elemente genauer beschrieben.

    Standard Path / Default Path

    Ein Projekt wird standardmäßig in dem folgenden Ordner gespeichert:

    C:\Users\<user>\Documents\Expression\Seadragon

    Quellbilder / Source Images

    Alle Projekte haben einen Ordner in dem die Quellbilder abgelegt werden. Dieser Ordner heißt „Source images“. Von dort werden die weiteren Arbeiten an den Bildern vorgenommen. Dies bedeutet, dass alle Bilder die importiert werden an einem anderen Ort als dem Ursprungsort kopiert (und nicht verschoben) werden.

    Arbeitsdaten / Working Data

    In dem Ordner „Working Data“ werden alle Daten gespeichert die für das Bearbeiten innerhalb des Deep Zoom Composers benötigt werden. Dazu gehören u.a. die Bilder die für das Zoomen im Arbeitsbereich benötigt werden.

    Projektdatei

    Alle Deep Composer Projekte haben eine .sdprj-Dateiendung. Diese Datei beinhaltet alle relevanten Daten eines Projektes. Das Dateiformat ist dabei XML und kann mit jedem Text-Werkzeug betrachtet werden.

    Ausgabe / Output

    Die Ausgabe erfolgt in das Verzeichnis „Output”. Wenn der Benutzer ein Deep Zoom Image exportiert, dann werden die entsprechenden Daten in den Ordner „Source Image\OutputSDI“ gespeichert.

    Einbinden in Silverlight mit Visual Studio

    Um die Deep Zoom Sammlung in eine Silverlight Anwendung zu integrieren ist nicht viel notwendig. Das Ergebnis das man weiterverwenden muss, befindet sich in einem Ordner unterhalb des OutputSdi-Verzeichnisses. Der Ordnername ist der gleiche wie der Projektname dem man im Deep Zoom Composer bei Export angegeben hat.

    Deep Zoom Projekt-Ordner in Web kopieren

    Den Ordner mit der Deep Zoom Sammlung muss man in das Web kopieren, das die Silverlight-Anwendung beinhaltet. Der einfachste Weg ist hierbei, das Kopieren in den ClientBin-Ordner, der auch die Silverlight-XAP-Datei befindet. Dadurch vermeidet man Probleme mit relativen und absoluten Pfaden. Ansonsten kann man es prinzipiell auch in jeden anderen Ordner kopieren. Dann muss allerdings sichergestellt werden, das der absolute Pfad zur Items.Bin-Datei angegeben wird.

    image

    Abbildung 7.17: Die Visual Studio-Projektstruktur nach dem Importieren der Deep Zoom Daten

    Die Silverlight-Anwendung

    <UserControl x:Class="DeepZoom.Einfach.Page"

    xmlns="http://schemas.microsoft.com/client/2007"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Width="Auto" Height="Auto">
    <Grid x:Name="LayoutRoot" Background="White" Width="Auto" Height="Auto">
    <MultiScaleImage x:Name="_myMsi" Source="portugalreise/items.bin" />
    </Grid>
    </UserControl>

    Listing 7.1: Das MultiScaleImage-Steuerelement zum Betrachten von Deep Zoom Sammlungen

    Das Ergebnis dieser Anwendung ist in Abbildung 7.18 zu sehen.

    image

    Abbildung 7.18: Das Ergebnis

    Das MultiScaleImage macht (fast) alles

    Das MultiScaleImage sorgt dafür, dass alle benötigten Daten bei Bedarf geladen werden, der Entwickler muss sich um nichts kümmern. Es bringt alle Funktionalitäten zum hinein und heraus zoomen mit. Allerdings muss der Entwickler definieren, wie dies geschehen soll, z.B. durch Tasteneingabe, Mausbewegungen oder programmatisch durch bestimmte Events im Code.

    Dazu können entsprechende Funktion von Silverlight und dem MultiScaleImage verwendet werden. Die in den folgenden Abschnitten hinzugefügt werden.

    Bewegen der Gesamtansicht per Maus

    Um die angezeigte Bildersammlung einfach mit der Maus hin und her bewegen zu können, werden einige Maus-Ereignisse verwendet.

    public Page() {

    InitializeComponent();
    this.Loaded += new RoutedEventHandler(Page_Loaded);
    }
    bool _mouseButtonPressed = false;
    bool _mouseIsDragging = false;
    Point _dragOffset;
    Point _currentPosition;
    Point _lastMousePosition;
    void Page_Loaded(object sender, RoutedEventArgs e) {
    _myMsi.MouseLeftButtonDown += new
    MouseButtonEventHandler(_myMsi_MouseLeftButtonDown);
    _myMsi.MouseMove += new MouseEventHandler(_myMsi_MouseMove);
    _myMsi.MouseLeftButtonUp += new
    MouseButtonEventHandler(_myMsi_MouseLeftButtonUp);
    }

    Listing 7.2: Initialisierung und Registrierung der Ereignisbehandlungen beim Loaded-Ereignis

    Für das Drag&Drop-Verhalten werden drei Ereignisse der Maus benötigt: MouseLeftButtonDown, MouseMove und MouseLeftButtonUp.

    void _myMsi_MouseLeftButtonDown(object sender,
    MouseButtonEventArgs e) {
    _mouseButtonPressed = true;
    _mouseIsDragging = false;
    _dragOffset = e.GetPosition(_myMsi);
    _currentPosition = _myMsi.ViewportOrigin;
    }

    Listing 7.3: MouseLeftButtonDown – Drücken der Maus

    Wenn die linke Maustaste gedrückt, wird die aktuelle Position der Maus in der Variable _currentPosition gespeichert um basierend darauf die Positionsveränderung zu ermitteln.

    void _myMsi_MouseMove(object sender, MouseEventArgs e) {
    Point mousePosition = e.GetPosition(_myMsi);
    if (_mouseButtonPressed) {
    _mouseIsDragging = true;
    }
    _lastMousePosition = mousePosition;
    if (_mouseIsDragging) {
    Point newOrigin = new Point();
    newOrigin.X = _currentPosition.X - (((mousePosition.X - _dragOffset.X)
    / _myMsi.ActualWidth) * _myMsi.ViewportWidth);
    newOrigin.Y = _currentPosition.Y - (((mousePosition.Y - _dragOffset.Y)
    / _myMsi.ActualHeight) * _myMsi.ViewportWidth);
    _myMsi.ViewportOrigin = newOrigin;
    }
    }

    Listing 7.4: MouseMove – Mausbewegung

    Wenn die Maus bewegt wird und vorher die linke Maustaste gedrückt wurde, dann wird die neue Position durch die Differenz der gespeicherten Position und der aktuellen Mausposition ermittelt. Der damit berechnete Weg wird anschließend der Maus wird auf die aktuelle Position des MultiScaleImage addiert bzw. subtrahiert.

    void _myMsi_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){
    _mouseButtonPressed = false;
    _mouseIsDragging = false;
    }

    Listing 7.5: Drag & Drop-Funktionalität für das MultiScaleImage

    Wenn die Maustaste wieder losgelassen wird, werden die Variablen wieder zurückgesetzt, damit bei der Mausbewegung kein automatisches verschieben der MultiScaleImage-Inhalte mehr geschieht.

    Zoomen mit Doppelklicken

    Um nun praktisch mit einem Mausklick hinein und heraus zoomen kann, benötigt man eine kleine Erweiterung der MouseLeftButtonUp-Ereignisbehandlung. Je nach dem ob gleichzeitig die Shift-Taste gedrückt halt oder nicht wird aus dem Bild heraus oder in das Bild hin gezoomt.

    void _myMsi_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
    double _zoomFactor;
    _mouseButtonPressed = false;
    if (_mouseIsDragging == false) {
    bool shiftDown = (Keyboard.Modifiers & ModifierKeys.Shift)
    == ModifierKeys.Shift;
    _zoomFactor = 2.0;
    if (shiftDown) {
    _zoomFactor = 0.5;
    }
    Zoom(_zoomFactor, _lastMousePosition);
    }
    _mouseIsDragging = false;
    }

    Listing 7.6: Innerhalb MouseLeftButtonUp-Ereignis wird geprüft ob die Shift-Taste gedrückt wird

    Wenn die Shift-Taste gedrückt während die linke Maustaste gedrückt wird, wird der Zoomfaktor auf 0,5 bzw. 50 Prozent gesetzt. Falls nicht die gleichzeitig die Shift

    private void Zoom(double zoomFactor, Point lastMousePosition)
    {
    Point logicalPoint =
    _myMsi.ElementToLogicalPoint(lastMousePosition);
    _myMsi.ZoomAboutLogicalPoint(zoomFactor, logicalPoint.X
    , logicalPoint.Y);
    }

    Listing 7.7: Zoomen basieren auf der aktuellen Mausposition

    Das Zoomen geschieht in zwei Schritten. Im ersten Schritt wird die genaue Zoomposition bestimmt (ElementToLogicalPoint). Diese Position legt fest, wo gnau hinein bzw. heraus gezoomt werden soll. Der zweite Schritt zoomt mittels ZoomAboutLogicalPoint und einem bestimmten Zoomfaktor herein bzw. heraus.

  • o-LIVE-r

    Meine Lieblingssidebar Gadgets

    • 0 Comments

    Das absolute Killer-Feature von Vista für meinen Vater (Frührenter mit Hang zum Fernweh) ist das Wetter-Gadget. Bei ihm muss man schon sagen die Wetter-Gadget. Seine Sidebar zieren im Schnitt 5 Wetter Gadgets, derzeit sind es Florenz, Phuket und ... keine Ahnung, wo sie sonst wieder hinreisen. Zusätzlich sind dort immer Hilden (meine alte Heimatstadt) und München (meine neue Heimatstadt) drin ... und München gewinnt fast immer was das Wetter angeht ;) Ich hoffe meine Eltern kommen jetzt nicht auf die Idee nach München zu ziehen.

    Ich selber bin auch ein großer Fan der Gadgets, derzeit habe ich dort den Countdown zur XTOPIA drin.

    image

    Damit ich die Performance meines Rechners kenne und weiß wann ich genug gleichzeitig laufende Visual Studios geöffnet habe, gucke ich ab und an auf den CPU Multimeter:

    image

    Und weil mein Englisch noch Potential hat ... Leo :-)

    image

    Damit ich immer das Finde was ich suche ;-)

    image

    Und damit ich weiß, wann es Zeit wird wieder einen Kaffee zu trinken natürlich mindestens ein Uhr

    image .

     

    Die Gadgets gibt es alle kostenfrei in der Windows Live Gallery: http://gallery.live.com/

  • o-LIVE-r

    Windows 7 – Multifunktionsleiste/Ribbon

    • 1 Comments

    Die Multifunktionsleiste wurde neu in Windows 7 integriert und entspricht nahezu der Multifunktionsleiste von Office 2007. Nahezu bedeutet dabei, dass sie konsequent weiterentwickelt wurde.

    Windows 7 und die Multifunktionsleiste

    Die Multifunktionsleiste ist in einige Klassiker eingeflossen: Paint und WordPad. Schade ist, dass sie es nicht auch in Notepad geschafft hat.

    image

    image

    Die Multifunktionsleiste ist ebenso in Windows Live Movie Maker integriert worden. Dieser läuft auch unter Windows Vista und zeigt, dass die Multifunktionsleiste auch auf Vista verfügbar sein wird.

    Entwickeln mit der Multifunktionsleiste

    Windows 7 führt ein neues natives API für Multifunktionsleisten-basierte Oberflächen ein. Dieses API ist COM-basiert. Das API wird in Zukunft auch für Windows Vista verfügbar sein und nahezu den gleichen Funktionsumfang wie die Office 2007-Multifunktionsleiste haben.

    Um als Entwickler die Multifunktionsleiste verwenden zu können, benötigt man das Windows 7 SDK (Link). Im SDK finden Sie unter anderem die Header-Datei (UIRibbon.h), die den Zugriff auf die Multifunktionsleiste bietet.

    Die Programmierung der Multifunktionsleiste teilt sich in zwei Bereiche auf: Im Deklarationsteil werden die verschiedenen Elemente, wie z.B. Tabreiter, Gruppierungen oder Kommandos, deklariert und ihr Aussehen beschrieben. Diese Beschreibung kann mit XAML (Extensible Markup Language) geschrieben werden. Die Ausführung der Kommandos und das Wechseln in verschiedene Zustände wird über C++-Code beschrieben, der die Darstellung mit der Anwendungslogik verknüpft, der eigentlichen Anwendungslogik.

    image

    Dadurch erhält man eine starke Separation in Model, Sicht und Controller, die den Code und das Markup entkoppelt. Die gesamte C++-API dazu ist sehr kompakt gehalten. Sie ist auf Kommandos fokussiert und nicht auf Steuerelemente oder Darstellungsdetails.

    Welche Steuerelemente bringt die Multifunktionsleiste mit

    Die Multifunktionsleiste verfügt über ein sehr großes Repertoire an Steuerelementen, die wir bereits aus Paint, WordPad und dem Windows Live Movie Maker her kennen.

    image

    Eine Funktion die nicht direkt in der Multifunktionsleiste integriert ist, sondern an beliebigen Stellen in der Anwendung verwendet werden kann, ist das erweiterte Kontextmenü. In WordPad erscheint dies leicht transparent, wenn man einen Text markiert. Darüber kann man dann zum Beispiel den selektierten Text formatieren. Diese Funktion erspart dem Benutzer, größere Strecken mit der Maus zurückzulegen und somit seinen aktuellen Fokus (den Text) zu verlassen.

    image

    image

    image

    image

    image

    image

    image

    image

    image

    image

    image

    image

    image

    image

    image

    Markup der Multifunktionsleiste

    Der Markup-Code für die Multifunktionsleiste unterteilt sich in zwei Bereiche: Command-Sektion und Views-Sektion.

    Die Command-Sektion beinhaltet die einzelnen Command-Elemente: einen Referenznamen, ein Label, eine eindeutige ID, ein Bild (BMP) und einen Tooltip.

    <?xmlversion="1.0" encoding="utf-8"?>
    <Applicationxmlns='http://schemas.microsoft.com/windows/2009/Scenic/Intent'>
    <Application.Commands>
    <CommandName='Home' LabelTitle='Home'/>
    <CommandName='HomePage' LabelTitle='HomePage'>
    <Command.LargeImages>
    <ImageSource='res/HomePageHH.bmp'/>
    </Command.LargeImages>
    </Command>
    </Application.Commands>

    Die Views-Sektion legt die Organisation der Kommandos in Tabs, Gruppen, Quick Access-Toolbar und Anwendungsmenü fest. Sie bestimmt außerdem, welches Steuerelement für welches Kommando verantwortlich ist.

    <Application.Views>
    <Ribbon>
    <Ribbon.Tabs>
    <Tab CommandName='Home'>
    <Group CommandName='GoHomePage' SizeDefinition='OneButton'>
    <Button CommandName='HomePage'/>
    </Group>
    </Tab>
    </Ribbon.Tabs>
    </Ribbon>
    </Application.Views>
    </Application>

    Die Multifunktionsleiste unterstützt zwei Arten von “Sichten”: die Multifunktionsleisten-Sicht und die kontextuelle UI-Sicht. Die kontextuelle UI-Sicht bietet ein reicheres Kontextsystem als bisherige Kontextmenüs.

    Da es sich bei der Multifunktionsleiste um eine native API handelt, muss aus der XAML-Datei erst einmal eine native Ressource erstellt werden. Dies geschieht mit einem Tool aus dem Windows SDK: UICC.exe. Dieses generiert aus der XAML-Datei eine Ressource, die man wiederum in seine Anwendung einbinden kann und dadurch die Multifunktionsleiste als nativen Code vorliegen hat.

    UICC.exe konvertiert XAML in ein binäroptimiertes Format und erstellt eine .rc-Datei, welche den binären “blob” mit den verwendeten Ressourcen enthält. Man sollte einen benutzerdefinierten Build-Step für die Erstellung der .rc-Datei mittels UICC.exe in sein Projekt einbauen, damit dieses automatisch während des Erstellens geschieht. Eine .h-Datei, die die #defines für die diversen Command-IDs enthält, wird ebenfalls generiert.

    Anwendungsmodi

    Durch Anwendugsmodi lässt sich die Darstellung von Elementen an den aktuellen Anwendungszustand koppeln, denn nicht immer soll alles sichtbar sein. In Microsoft Paint wird z.B. der Text-Tab nur angezeigt wenn man Text bearbeitet. Ansonsten wird diese Funktion nicht benötigt. Im Markup-Code definiert man die Anwendungsmodi, in denen die Elemente sichtbar sein sollen. Der Anwendungsmodus wird auf untergeordnete Steuerelemente automatisch vererbt.

    <Button CommandName='Paste' ApplicationModes='1,3'/>

    Im Code kann man den Modus durch die Funktion IUIFrameworkSetModes ändern.

    Die API-Interfaces im Überblick

    • IUIFramework – initialisiert Multifunktionsleiste, lädt Markup-Resourcen, Get und Set für Command-Eigenschaften oder State, Set Application Modes.
    • IUIApplication–Ermittelt User Command-Handler für jedes Command, welches im Markup definiert wurde. Benachrichtigt über View-State-Änderungen.
    • IUICommandHandler –Behandelt Commands und Property-Updates (z.B. Aktivieren und Deaktivieren eines Commands, basierend auf der aktuellen Sicht) .

    Codebeispiel: Initialisierung

    IUIFramework* g_pFramework = NULL;
    ::CoCreateInstance(CLSID_UIMultifunktionsleisteFramework, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&g_pFramework));
    CComObject<CApplication> *pApp = NULL;
    CComObject<CApplication>::CreateInstance(&pApp);
    CComPtr<IUIApplication> spApp(pApp);
    g_pFramework->Initialize(hWindowFrame, spApp);
    g_pFramework->LoadUI(GetModuleHandle(NULL), L"APPLICATION_Multifunktionsleiste");

    Codebeispiel: Behandeln von Ereignissen

    class CApplication :
    public CComObjectRootEx<CComMultiThreadModel>,
    public IUIApplication,
    public IUICommandHandler
    {
    public:
    BEGIN_COM_MAP(CApplication)
    COM_INTERFACE_ENTRY(IUIApplication)
    COM_INTERFACE_ENTRY(IUICommandHandler)
    END_COM_MAP()

    ...

    STDMETHOD(OnSichtChanged)(UINT32 nSichtID,
    __in UI_SichtTYPE typeID, __in IUnknown* pSicht,
    UI_SichtVERB verb, INT32 uReasonCode)
    { return E_NOTIMPL; }
    STDMETHOD(OnCreateUICommand)(UINT32 nCmdID,
    __in UI_COMMANDTYPE typeID,
    __deref_outIUICommandHandler** ppCmdHndlr)
    { return QueryInterface(IID_PPV_ARGS(ppCmdHndlr)); }
    STDMETHOD(OnDestroyUICommand)(UINT32 commandId,
    __in UI_COMMANDTYPE typeID,
    __in_optIUICommandHandler* pCommandHandler)
    { return E_NOTIMPL; }
    STDMETHODIMP Execute(UINT nCmdID,
    UI_EXECUTIONVERB verb,
    __in_opt const PROPERTYKEY* key,
    __in_opt const PROPVARIANT* ppropvarValue,
    __in_optIUISimplePropertySet* pCmdExecProps)
    {
    if (verb == UI_EXECUTIONVERB_EXECUTE
    && nCmdID == HomePage)
    MessageBox(NULL, L"Clicked on HomePagebtn”, L"HomePage Button Execute“, MB_OK);
    return S_OK;
    }
    STDMETHODIMP UpdateProperty(UINT nCmdID,
    __in REFPROPERTYKEY key,
    __in_opt const PROPVARIANT* ppropvarCurrentValue,
    __out PROPVARIANT* ppropvarNewValue)
    {
    if (key == UI_PKEY_Enabled &&
    nCmdID == HomePage && m_bPressed)
    {
    return UIInitPropertyFromBoolean(
    UI_PKEY_Enabled, FALSE, ppropvarNewValue);
    }
    return E_NOTIMPL;
    }

    Ein vollständiges Beispiel befindet sich im Windows 7 SDK (Link).

  • o-LIVE-r

    Windows Live Messenger 8 ist fertig

    • 0 Comments

    Jetzt ist es endlich soweit, der Windows Live Messenger 8 ist fertig und strotzt nur so vor Features:

    • Telefonieren ins Festnetz
    • Telefonieren von PC zu PC
    • SMS Senden
    • Live Video
    • Austauschen von Dateien
    • Communities
    • Windows Live Alerts - Schlagzeilen und Sportergebnisse, Verkehrsmeldungen, etc. automatisiert erhalten.
    • Und bald kann man sich auch mit den Freunden bei Yahoo! unterhalten.

    Hier geht es zum Download.

  • o-LIVE-r

    Selber Apps erstellen und das kinderleicht: App-Entwickler-Konferenz 2010

    • 1 Comments

    Die Deutsche Telekom veranstaltet im November 2010 eine sehr interessante Entwickler-Konferenz. Es geht um Apps für Mobile Devices. Auf der plattformübergreifend App-Softwareentwickler-Konferenz treffen Sie unabhängige Entwickler und Branchengrößen wie Apple, HTC, LG, Microsoft, Nokia, Research in Motion, Samsung oder Sony Ericsson.
    Von Microsoft sind mit dabei Frank Prengel mit dem Vortrag bzw. Workshop "Apps für Windows Phone 7 – Plattform, Tools & Dienste" sowie Oliver Scheer mit dem Vortrag "Design & Code für Windows Phone 7 – Silverlight UI & Phone APIs".
    Weiterhin gibt es neben zahlreichen Vorträgen bzw. Workshop auch einen App-Wettbewerb, bei dem Sie die Möglichkeit nutzen können, eine Ihrer Apps auf Konferenz einem hochkarätigen Publikum vorzustellen zu können. Zu gewinnen gibt es übrigens ein Samsung Galaxy Tab, ein BlackBerry Torch oder ein Windows Phone HTC 7 Mozart.
    Rund um die Software-Entwicklung für Windows Phone stellt das Microsoft Developer Network (MSDN) das deutschsprachige Windows Phone Developer Center sowie das Windows Phone-Forum bereit. Für einen Schnelleinstieg sind die "Ersten Schritte" zu empfehlen. Dann einfach noch die finalen, kostenlosen Entwicklerwerkzeuge für Windows Phone herunterladen. Das Rundumsorglospaket beinhaltet alle notwendigen Tools, damit sofort losgelegt werden kann.

    Wir haben von der Telekom dankenswerter Weise noch ein paar Rabattcodes für die Teilnahme bekommen (50% Rabatt und einige wenige mit 100%).

    Wer Interesse hat, bitte schnell auf msdnwin@microsoft.com melden.  First come, first serve.

    Mehr Informationen: App-Entwickler-Konferenz am 17. November 2010 in Bonn



  • o-LIVE-r

    Daily Demo: Silverlight Behavior for 3D Hover Effect

    • 0 Comments

    Behaviors are great new feature in Silverlight 3 (or better in Blend 3) for adding “features” to a control without coding. My favorite sample is a hover effect, that applies when a mouse enters a control.

     

    image

     

    Live-Preview

     

    XAML-Code:

     

    <UserControl
        x:Class="Hover3DBehavior.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        xmlns:TheOliver_Controls="clr-namespace:TheOliver.Controls"
        d:DesignHeight="300"
        d:DesignWidth="400"
        xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input">
    
        <Grid
            x:Name="LayoutRoot"
            Background="White">
            <Button
                Content="Button"
                Height="23"
                HorizontalAlignment="Left"
                Margin="89,78,0,0"
                Name="button1"
                VerticalAlignment="Top"
                Width="75">
                <i:Interaction.Behaviors>
                    <TheOliver_Controls:Hover3DBehavior />
                </i:Interaction.Behaviors>
            </Button>
    
            <dataInput:Label
                Height="50"
                HorizontalAlignment="Left"
                Margin="274,64,0,0"
                Name="label1"
                VerticalAlignment="Top"
                Width="100"
                Content="Hello World">
                <i:Interaction.Behaviors>
                    <TheOliver_Controls:Hover3DBehavior />
                </i:Interaction.Behaviors>
            </dataInput:Label>
    
            <RadioButton
                Content="RadioButton"
                Height="16"
                HorizontalAlignment="Left"
                Margin="12,133,0,0"
                Name="radioButton1"
                VerticalAlignment="Top">
                <i:Interaction.Behaviors>
                    <TheOliver_Controls:Hover3DBehavior />
                </i:Interaction.Behaviors>
            </RadioButton>
    
        </Grid>
    </UserControl>
    
    

     

    Source-Code:

     

    // Copyright © Microsoft Corporation.  All Rights Reserved.
    // This code released under the terms of the 
    // Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)
    
    using System.ComponentModel;
    using System.Windows;
    using System.Windows.Input;
    using System.Windows.Interactivity;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    
    namespace TheOliver.Controls
    {
        public class Hover3DBehavior : Behavior<UIElement>
        {
            PlaneProjection _planeProjection;
    
            public Hover3DBehavior()
                : base()
            {
               
            }
    
            Storyboard _hoverMe;
            Storyboard _unhoverMe;
    
            public double ZHoverValue
            {
                get { return (double)GetValue(ZHoverValueProperty); }
                set { SetValue(ZHoverValueProperty, value); }
            }
    
            public static readonly DependencyProperty ZHoverValueProperty =
                DependencyProperty.Register("ZHoverValue", typeof(double), typeof(Hover3DBehavior),
                new PropertyMetadata(500.0, null));
    
            public int HoverDurationMilliseconds
            {
                get { return (int)GetValue(HoverDurationMillisecondsProperty); }
                set { SetValue(HoverDurationMillisecondsProperty, value); }
            }
    
            public static readonly DependencyProperty HoverDurationMillisecondsProperty =
                DependencyProperty.Register("HoverDurationMilliseconds"
                , typeof(int)
                    , typeof(Hover3DBehavior),
                    new PropertyMetadata(200, null));
    
            #region Overrides 
    
            protected override void OnAttached()
            {
                base.OnAttached();
    
                _planeProjection = new PlaneProjection();
                this.AssociatedObject.Projection = _planeProjection;
    
                if (!DesignerProperties.GetIsInDesignMode(this))
                {
                    _hoverMe = new Storyboard();
    
                    DoubleAnimation da1 = new DoubleAnimation();
    
                    _hoverMe.Children.Add(da1);
                    da1.Duration = new Duration(new System.TimeSpan(0, 0, 0, 0, HoverDurationMilliseconds));
                    da1.To = this.ZHoverValue;
                    Storyboard.SetTarget(da1, this.AssociatedObject);
                    Storyboard.SetTargetProperty(da1, new PropertyPath("(UIElement.Projection).(PlaneProjection.LocalOffsetZ)"));
    
                    DoubleAnimation da2 = new DoubleAnimation();
                    BounceEase be2 = new BounceEase();
                    be2.EasingMode = EasingMode.EaseOut;
                    be2.Bounces = 3;
                    da2.EasingFunction = be2;
    
                    _unhoverMe = new Storyboard();
                    _unhoverMe.Children.Add(da2);
                    da2.Duration = new Duration(new System.TimeSpan(0, 0, 0, 0, 1000));
                    da2.To = 0.0;
                    Storyboard.SetTarget(da2, this.AssociatedObject);
                    Storyboard.SetTargetProperty(da2, new PropertyPath("(UIElement.Projection).(PlaneProjection.LocalOffsetZ)"));
    
                    if ((this.AssociatedObject as FrameworkElement).Resources.Contains("hoverme"))
                    {
                        (this.AssociatedObject as FrameworkElement).Resources.Remove("hoverme");
                    }
                    (this.AssociatedObject as FrameworkElement).Resources.Add("hoverme", _hoverMe);
                    
                    if ((this.AssociatedObject as FrameworkElement).Resources.Contains("unhoverme"))
                    {
                        (this.AssociatedObject as FrameworkElement).Resources.Remove("unhoverme");
                    }
                    (this.AssociatedObject as FrameworkElement).Resources.Add("unhoverme", _unhoverMe);
                }
                
                this.AssociatedObject.MouseEnter += AssociatedObject_MouseEnter;
                this.AssociatedObject.MouseLeave += AssociatedObject_MouseLeave;
    
            }
            
            protected override void OnDetaching()
            {
                base.OnDetaching();
    
                this.AssociatedObject.Projection = null;
                _planeProjection = null;
    
                this.AssociatedObject.MouseEnter -= AssociatedObject_MouseEnter;
                this.AssociatedObject.MouseLeave -= AssociatedObject_MouseLeave;
            }
    
            #endregion
    
            #region Events
    
            void AssociatedObject_MouseLeave(object sender, MouseEventArgs e)
            {
                _unhoverMe.Begin();
            }
    
            void AssociatedObject_MouseEnter(object sender, MouseEventArgs e)
            {
                //FrameworkElement e1 = this.AssociatedObject as FrameworkElement;
                //if (e1.Parent is Panel)
                //{
                //    Panel p = e1.Parent as Panel;
                //    if (p != null)
                //    {
                //        UIElement element = this.AssociatedObject;
                //        element.SetValue(UIElement.
                //        p.Children.Remove(element);
                //        p.Children.Add(element);
                //    }
                //}
                _hoverMe.Begin();
            }
    
            #endregion
    
        }
    }

     

    Download-SampleCode

  • o-LIVE-r

    Lebe wohl Maus ... WACOM herzlich willkommen

    • 0 Comments

    In guter Manier und Inspiration von meinem Manager FrankFi, der sich in einem Betrauerungsblogeintrag von seinem "geliebtem" Toshi M4 verabschiedet (siehe hier), möchte ich hiermit gestehen, das ich meine Maus absofort ins Heim schicken werde. Dieses lästige Kabel ging mir schon ewig auf den Keks und für meine "groben" Hände sind die Viecher eh viel zu klein.

    Seid einigen Tagen bin ich zweifacher Vater von zwei süßen WACOMs, die ich nach kurzem Zweifel sofort in mein Herz geschlossen habe. Das große 16:10 INTUOS 3 wide steht bei mir jetzt im Office. Das kleine schnuckelige Pen Tablet ist für zuhause und unterwegs. Ich will nicht mehr ohne sein.

    Ehrlich gesagt ist es am Anfang doch etwas gewöhnsbedürftig. Als alter Mausschubser ist man schon stark an die zwei oder drei (oder gar fünf) Maustasten gewöhnt. Aber es soll doch tatsächlich Menschen geben, die mit nur einer Taste auf ihrer Maus auskommen, komisch :)

    Man(n) hat eine viel natürlichere Haltung, und nach ein bisschen Übung trifft man sofort jeden beliebigen Punkt am Bildschirm. Besonders mit Grafiktools, die schon eher natürlicheres Malverhalten erwarten, als das Zeichnen mit der Maus ist es erlaubt ist es ein riesen Vorteil. Was mir besonders Spaß macht, ist das Zeichnen. Das WACOM erkennt 1024 Druckstufen, heißt auf Deutsch, wenn ich feste drücke, wir der Strich/Pinsel/Bürste/(Was auch immer) breiter, dicker, dunkler, etc.

    Demnächst mehr über meine Kunstwerke mit Expression Design und Co. hier auf diesem Kanal.

    Eindeutiger Nachteil: Meine Sauklaue bleibt eine Sauklaue, siehe unten. :-)

     

    Brief
  • o-LIVE-r

    Windows 7 – Entwickeln mit der neuen Taskleiste

    • 0 Comments

    Die Taskleiste in Windows 7 hat eine lange Geschichte hinter sich.

    Geschichte der Taskleiste

    In Windows 1 gab es die Taskleiste noch nicht, es gab lediglich einfache Symbole am unteren Rand. Man konnte die Symbole noch nicht einmal verschieben. Aber der Kenner weiß, dass bereits in dieser Version das „Docking“ der Fenster von Microsoft erfunden wurde. Dieses Feature ist zwar in folgenden Versionen verschwunden, aber in Windows 7 „wieder auferstanden“.

    image

    In Windows 2.x konnte man Anwendungen mit Hilfe des Program Managers starten. Man hangelte sich dabei durch verschiedene Fenster, die innerhalb des Program Managers geöffnet und geschlossen werden konnten. Um schneller auf Anwendungen zugreifen zu können, konnte man bereits „Shortcuts“ auf den Desktop legen.

    image

    Get Microsoft Silverlight

    In Windows 95 hielt die Taskleiste und der Start-Knopf Einzug. Erstmals wurden ausgeführte Anwendungen als Symbole in der Taskleiste angezeigt und konnten darüber hinaus minimiert, maximiert und geschlossen werden. Darin hat sich bis zum heutigen Tage auch wenig verändert.

    image

    In Windows XP wurde die komplette Taskleiste in ein neues Design überführt.

    image

    Mit Windows Vista kam zum ersten Mal die Möglichkeit auf, innerhalb des Startmenüs nach Programmen und Funktionen zu suchen bzw. die Suche über den gesamten Computer zu starten. Dieses Feature wurde auch nötig, da die Programmflut im Startmenü dank vieler Zeitschriften mit CD-Beilagen ins Unermessliche gestiegen war ;)

    image

    In Windows 7 wurde Taskleiste visuell sehr „vereinfacht“ und mit vielen neuen Funktionen erweitert. Gestartete Programme werden in der gleichen Leiste angezeigt wie Verknüpfungen. Lediglich das Aussehen unterscheidet nun zwischen den verschiedenen Status der Anwendung.

    Bei diversen Benutzerumfragen wurden folgende Fakten festgestellt:

    • Mehr als 90 % aller Benutzersitzungen haben weniger als 15 gleichzeitig geöffnete Fenster.
    • Mehr als 70 % aller Sessions haben weniger als 10 Fenster gleichzeitig geöffnet.
    • Nicht-Standard-Optionen wurden nur von max. 10 % aller Benutzer überhaupt verwendet.

    Die Ziele für die Entwicklung der neuen Taskleiste sind daher wie folgt definiert worden:

    • Eine Startoberfläche für alle Anwendungen und Ziele
    • Die am meisten benutzten Elemente sollen auf „Fingertipp“ bereitstehen
    • Einfach kontrollier- und verwaltbar mit einfachsten Mitteln
    • Sauber, störungsfrei und einfach

    Terminologie und Funktionen der neuen Taskleiste

    Taskleisten-Schaltflächen
    Jede Anwendung, jedes Ziel und jede Verknüpfung wird durch ein Symbol auf der Taskleiste dargestellt. Gestartete bzw. geöffnete Anwendungen und Ziele werden als Schaltfläche dargestellt. Sind mehrere Instanzen ein und derselben Anwendungen geöffnet, werden diese kaskadierend dargestellt. Dies kann aber über die Eigenschaften der Taskleiste nach eigenen Wünschen verändert werden.

    Die Schaltflächen lassen sich sehr vielseitig anpassen. Folgende Möglichkeiten hat der Benutzer:

    • Änderung der Darstellung durch Overlays
    • Darstellung mehrfarbiger Fortschrittsbalken
    • Ändern des Hintergrunds

    Damit hat man die Möglichkeit den Status der Anwendung innerhalb der Startleiste zu visualisieren. Folgende Szenarien wären denkbar: Läuft die Anwendung, behält sie das normale Symbol. Muss der User eine Interaktion durchführen, lässt man das Symbol pulsieren, liegt ein Problem vor, zeigt man zum Beispiel ein rotes Kreuz an.

    image

    Sprunglisten, Ziele und Aufgaben
    Jedes Symbol in der Taskleiste hat eine so genannte Sprungliste. Innerhalb dieser Sprungliste gibt es Elemente die jede Anwendung besitzt: Öffnen, Alle Fenster schließen und an die Taskleiste heften bzw. von dieser entfernen. Darüber hinaus kann eine Sprungliste noch zusätzliche Dinge anzeigen. Ist eine Anwendung z.B. mit einem bestimmten Dateityp assoziiert, wie z.B. Word mit Doc-Dateien, dann werden diese automatisch unter „Zuletzt verwendet“ in der Sprungliste angezeigt. Möchte man dort vielleicht ein Dokument immer wieder öffnen, so kann man dies „anheften“. Dadurch steht es solange in dieser Liste, bis man es wieder entfernt. Diese Funktionen stehen jeder Anwendung sofort aus dem Stand zur Verfügung, ohne dass dazu Code notwendig ist.
    Zusätzlich lassen sich innerhalb der Sprungliste aber auch noch Aufgaben integrieren. Das können beliebige Tätigkeiten sein. Der Windows Live Messenger macht es vor und bietet die folgenden Aufgaben an: MSN Startseite anzeigen, Postfach öffnen, Sofortnachricht senden, Online, Offline, Abwesend, usw. Das neue Outlook 2010 bietet ähnliche Funktionalitäten, so kann man über die Sprungliste sofort eine Email erstellen, einen Termin planen, direkt den Kalender aufrufen, u.v.m. Wenn man dieses Feature einmal verwendet hat, möchte man es nicht mehr missen.

    image

    Thumbnail-Toolbars
    Ein weiteres neues Feature sind die Thumbnail-Toolbars. Als gutes Beispiel geht der Windows Media Player voran. Geht man mit der Maus über das Symbol des laufenden Mediaplayers, sieht man das aktuelle Video oder Musikcover und zusätzlich die Möglichkeit den Player zu starten, ein Element zurück- oder eines vorzuspringen. Dadurch lässt sich der Player direkt aus der Startleiste steuern, ohne dass man ihn erst einmal in den Vordergrund holen muss.

    image

    Auch die Darstellung der Vorschau in der Taskleiste ist individuell anpassbar. Man hat in der Startleiste und deren Vorschau ja nicht beliebig viel Platz. Daher kann man die Darstellung in der Vorschau nach eigenen Wünschen gestalten und nur das Wesentliche anzeigen lassen.

    Verwendung von Managed Code

    Die einfachste Art und Weise, um auf die Funktionen der Taskleiste zuzugreifen ist das Windows API Code Pack (http://code.msdn.microsoft.com/WindowsAPICodePack). Dieses wurde bereits vor einigen Tagen vorgestellt. Bindet man dieses in sein eigenes Projekt ein, kann man direkt auf die Funktionen der Taskleiste zugreifen.

    Um beispielsweise ein Overlay-Symbol über dem Anwendungssymbol einzublenden, ist der folgende Code notwendig.

    windowsTaskbar.SetOverlayIcon(this.Handle, TaskbarDemo.Properties.Resources.Yellow, "Yellow");

    Dabei wird auf ein Bild zugegriffen, das im Projekt als Ressource mit dem Namen “Yellow” eingebunden wurde.

    Möchte man die zuletzt verwendeten Dokumente in der Sprungliste anzeigen, reicht dieser Code.

    jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;

    Oder

    jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Frequent;

    Möchte man den Fortschritt der Anwendung in der Taskleiste darstellen, ist dieser Code ausreichend.

    TaskbarManager.Instance.SetProgressValue(trackBar1.Value, 100);

    Was sind Sprunglisten?

    Bei den Sprunglisten handelt es sich um eine neue Funktionalität, die es ermöglicht, dem Anwendungssymbol zusätzliche Funktionen hinzuzufügen. Einfach auf dem Symbol die rechte Maustaste drücken und schon erscheint die Sprungliste. Standardmäßig sind die Funktionen zum Öffnen, Schließen und Anheften enthalten. Wenn die Anwendung die Funktionen „Zuletzt verwendete Dokumente“ und „Häufig verwendete Dokumente“ unterstützt, so werden diese Dokumente ebenfalls direkt in der Sprungliste angezeigt. Diese Liste der Dokumente kann für eigene Anwendungen sehr leicht angepasst werden.

    Für einen einfachen Zugriff empfiehlt sich die Verwendung des Windows API Code Pack (Link kommt hier rein). Verwendet man diese Bibliothek, dann lässt sich die Liste der Dokumente über die folgenden Zeilen Code steuern:

    private JumpListCustomCategory category1 =
    new JumpListCustomCategory("Custom Category 1");

    // Add shell item to custom category
    String path = “mydocument.txt”;
    category1.AddJumpListItems(new JumpListItem(path));

    image

    Möchte man eine eigene Aufgabe zur Taskleiste hinzufügen, die dafür sorgt, dass ein bestimmtes Programm geöffnet wird, so geht dies mit den folgenden Zeilen Code.

    // Path to Windows system folder
    string systemFolder = Environment.GetFolderPath(Environment.SpecialFolder.System);

    // Add our user tasks
    jumpList.AddUserTasks(new JumpListLink(Path.Combine(systemFolder, "notepad.exe"), "Open Notepad")
    {
       IconReference = new IconReference(Path.Combine(systemFolder, "notepad.exe"), 0)
    });
    jumpList.AddUserTasks(new JumpListLink(Path.Combine(systemFolder, "mspaint.exe"), "Open Paint")
    {
      IconReference = new IconReference(Path.Combine(systemFolder, "mspaint.exe"), 0)
    });
    jumpList.AddUserTasks(new JumpListSeparator());
    jumpList.AddUserTasks(new JumpListLink(Path.Combine(systemFolder, "calc.exe"), "Open Calculator")
    {
      IconReference = new IconReference(Path.Combine(systemFolder, "calc.exe"), 0)
    });

     

    Externe Tools für Sprunglisten

    Wer gerne Schnellzugriff auf frei konfigurierbare Tools haben möchte, dem kann ich den Jumplist-Launcher empfehlen. Ein kostenfreies Tool, das es hier (Link: http://www.ali.dj/jumplist-launcher/) gibt. Damit lassen sich bis zu 60 Programme frei in der Jumplist konfigurieren.

  • o-LIVE-r

    Silverlight 4: How to integrate Microsoft Translator Service into Silverlight and Windows Phone

    • 0 Comments

    A few weeks ago, I found the Microsoft Translator Interactive SDK, and I recognized that it is very easy to use in .NET applications, like Silverlight and Windows Phone.

    So I started a sample application. After a while I got the idea to build a “UserControl” out of this feature. Why? Because it is “pickable” in the UI for a developer or Designer. The control itself is not visible at runtime, it only appears at designtime, as an ugly looking red box with its name on it.

    You can see the App here in action.

    Sample of the control in Silverlight 4 App

    image

    Sample of the control in Windows Phone 7 Application

     image

    Why it is so interesting for me? Because you can reuse it very easy, without knowledge of the internas. It has just a few properties for configuration and one Load-Method.

    It just has one important property you have to set, the Application Id of Microsoft Translator. You can get one here (http://developer.live.com).

    image

    The control has two events.

    image

    To translate text from one language (de-de = Germany) into one other (en-us = English US) is extremly simple. Problems like synchronizing the background thread into the UI-Thread is hidden in the control.

    The following code demonstrates the easiness of using.

    private void MicrosoftTranslator_Translated(object sender, TheOliver.Controls.TranslatorEventArgs args)
    {
        _out.Text =args.TranslatedText;
    }
    
    private void MicrosoftTranslator_TranslationError(object sender, TheOliver.Controls.TranslatorErrorEventArgs args)
    {
        _out.Text= args.Error.Message;
    }
    
    private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        _mts.Translate(_in.Text, "de-de", "en-us");
    }

    Here is the complete code of the Microsoft Translator Service:

    // Copyright © Microsoft Corporation.  All Rights Reserved.
    // This code released under the terms of the 
    // Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)
    
    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Media;
    
    namespace TheOliver.Controls
    {
        public class MicrosoftTranslator : UserControl, INotifyPropertyChanged
        {
            private string _appId;
            public string AppId
            {
                get { return _appId; }
                set { _appId = value; }
            }
    
            private bool _isBusy = false;
            public bool IsBusy
            {
                get { return _isBusy; }
                set
                {
                    _isBusy = value;
                    OnPropertyChanged("IsBusy");
                    this.IsIdle = !_isBusy;
                }
            }
    
            private bool _isIdle = true;
            public bool IsIdle
            {
                get { return _isIdle; }
                set
                {
                    _isIdle = value;
                    OnPropertyChanged("IsIdle");
                }
            }
    
            private byte[] _bytes;
    
            public MicrosoftTranslator()
            {
                if (DesignerProperties.GetIsInDesignMode(this))
                {
                    StackPanel sp = new StackPanel();
                    sp.Background = new SolidColorBrush(Colors.Red);
    
                    TextBlock tb = new TextBlock();
                    tb.Text = "[Microsoft Translator Service]";
    
                    sp.Children.Add(tb);
                    this.Content = sp;
                }
            }
    
            public void Translate(string sourceText, string sourceLanguage, string targetLanguage)
            {
                if (this.AppId == string.Empty || this.AppId == null)
                {
                    MessageBox.Show("No AppId for Translator service defined. You can get an AppId at http://dev.live.com.");
                    return;
                }
    
                this.IsBusy = true;
    
                // Creating a string with the request URL
                // The URL includes the Bing developer appId and in this case hardcoded to translate from 
                // English to Spanish
                string translateUri =
                    "http://api.microsofttranslator.com/V1/Http.svc/Translate?appId=" + _appId
                    + "&from=" + sourceLanguage
                    + "&to=" + targetLanguage;
    
                // Create a web request to the URL
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(translateUri);
    
                // Set the request method to POST
                httpWebRequest.Method = "POST";
    
                // Set the content type (needs to be text/plain for POST methods)
                httpWebRequest.ContentType = "text/plain";
    
                // Encode the txtInput value bytes for the POST
                _bytes = Encoding.UTF8.GetBytes(sourceText);
    
                // Create a stream for the request
                httpWebRequest.BeginGetRequestStream(new AsyncCallback(OnGetRequestStream), httpWebRequest);
            }
    
            private void OnGetRequestStream(IAsyncResult iar)
            {
                try
                {
                    HttpWebRequest httpWebRequest = (HttpWebRequest)iar.AsyncState;
                    Stream os = httpWebRequest.EndGetRequestStream(iar);
    
                    os.Write(_bytes, 0, _bytes.Length);
    
                    if (os != null)
                    {
                        // Close the stream when finished
                        os.Close();
                    }
    
                    // Send the request and get the response
                    httpWebRequest.BeginGetResponse(new AsyncCallback(OnGetResponse), httpWebRequest);
                }
                catch (Exception exc)
                {
                    RaiseError(exc);
                }
            }
    
            private void OnGetResponse(IAsyncResult iar)
            {
                try
                {
                    HttpWebRequest request = (HttpWebRequest)iar.AsyncState;
    
                    if (!iar.IsCompleted)
                    {
                        Debug.WriteLine("Not completed");
                    }
                    WebResponse response = request.EndGetResponse(iar);
    
                    // Open a stream for the response
                    Stream stream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(stream);
    
                    // Create a string for the contents of the web response
                    string output = reader.ReadToEnd();
    
                    // Return the output string
                    OnTranslated(output);
                }
                catch (Exception exc)
                {
                    RaiseError(exc);
                }
            }
    
            public event TranslatorEventHandler Translated;
            public event TranslatorErrorEventHandler TranslationError;
    
            private void OnTranslated(string output)
            {
                this.IsBusy = false;
                if (Translated != null)
                {
                    Dispatcher.BeginInvoke(() =>
                        {
                            TranslatorEventArgs args = new TranslatorEventArgs();
                            args.TranslatedText = output;
                            Translated(this, args);
                        });
                }
            }
    
            private void RaiseError(Exception exc)
            {
                this.IsBusy = false;
                if (TranslationError != null)
                {
    
                    Dispatcher.BeginInvoke(() =>
                        {
                            TranslatorErrorEventArgs args = new TranslatorErrorEventArgs();
                            args.Error = exc;
                            TranslationError(this, args);
                        });
                }
            }
    
            public event PropertyChangedEventHandler PropertyChanged;
            private void OnPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    Dispatcher.BeginInvoke(() =>
                        {
                            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                        });
                }
            }
        }
    
        public delegate void TranslatorEventHandler(object sender, TranslatorEventArgs args);
    
        public class TranslatorEventArgs : EventArgs
        {
            public string TranslatedText { get; set; }
        }
    
        public delegate void TranslatorErrorEventHandler(object sender, TranslatorErrorEventArgs args);
    
        public class TranslatorErrorEventArgs
        {
            public Exception Error { get; set; }
        }
    }

    I hope you like this sample and the translator app.

    Best regards,
    The-Oliver

Page 1 of 55 (1,358 items) 12345»