Archive for the 'Actus' Category


Silverlight 5 Preview Features

1 commentaire

    Silverlight 5 sera là pour le second semestre 2011, c'est en substance le message que Scott Guthrie a diffusé le 2 décembre lors de l'événement FireStarter. Vous pouvez retrouver la Keynote ici.

    En attendant la version finale, une première version sera disponible courant du premier trimestre 2011. Le salon du MIX se tiendra du 12 au 14 avril 2011 à Las Vegas, il est très probable que la version Bêta sera disponible dès cette date si n'est plus tôt. Scott a tout de même pris le temps de communiquer quelques infos à propos de cette version. Le passage de la version 4 à 5 pourrait être comparée à celui qu'il y a eu entre la version 1 et 2. L'un des indices qui nous mène à cette réflexion concerne la durée des développement qui vont au moins s'étaler sur un an complet (d'après Scott puis qu'elle est prévue sur le second semestre) alors que le passage de la 3 vers la 4 n'avait duré que 10 mois environ. Scott Guthrie rassure tous les acteurs et la communauté Silverlight avec une énorme liste de fonctionnalité. Quelques sujets sont encore vaguement présenté mais on peut facilement imaginer leur impact et leur implémentation. En voici quelques unes de taille :

    -Nouvelle API 3D et moteur 3D

    -Impression vectorielle avec API riche

    -Un système de liaison largement amélioré avec notamment :

    • les customs markup extensions
    • la possibilité de placer des breaks points dans le XAML
    • Ancestor RelativeSource

    -Grosses améliorations à prévoir en termes de mise en page et d'affichage du texte.

    -Accélération GPU bien mieux supportée et intégrée

    -Le décodage hardware des vidéos HD H264, cela signifie que le GPU pourra prendre en charge lui même la décompression vidéo et soulagé le CPU.

    -La possibilité de créer des liaisons de données dans les Setter des styles. Cette fonctionnalité là est réellement très pratique lorsque l'on utilise des propriétés attachées notamment.

    -Les modèles de données (DataTemplate) peuvent désormais être implicite ça s'est plutôt une bonne nouvelle et encore une fois on sent bien que Microsoft essaie au maximum de rapprocher le flux de production Silverlight et WPF.

    -Les tests unitaires pour les IHM seront dorénavant supportés et Microsoft fournira un outil à cet fin :)

    Il y a encore pas mal d'autres fonctionnalités et certaines d'entre elles apparaîtront peut-être au fil du temps et des annonces alors rester à l'écoute car Microsoft investit massivement dans Silverlight 5 et vient de nous le prouver.

    Fxg Import versus DrawingBrush in Expression Blend SP1

    Aucun commentaire

      Depuis le service pack1 de Blend, ce dernier propose le nouveau type d'importation FXG qui jusque là était purement réservé aux produits de la gamme Adobe. Clairement Microsoft n'a jamais réellement eu pour vocation de créer des logiciels de conception graphique pour le print ou le web tels qu'Expression Design. C'est un coup de génie que l'on voit venir depuis des mois, la notion de DrawingBrush n'a pas été portée sur Silverlight 4 et aucune annonce ne va dans ce sens pour la version 5. Ce n'est plus rédhibitoire aujourd'hui avec l'import direct de librairies FXG, de cette manière Microsoft clarifie son positionnement aussi bien d'un point de vue métier (dans le flux de production) que d'un point de vue outil. Cette fonctionnalité n'est pas forcément connue des développeurs car beaucoup de projets WPF se sont passés des DrawingBrush exportés sous forme de dictionnaires de ressources depuis Expression Design. Cela est certainement dommageable mais on peut contourner cette manière de gérer les différents acteurs d'une production avec plus ou moins de réussite.

      Concrètement grâce aux DrawingBrush sous WPF, nous avons la capacité d'avoir des remplissages de formes vectorielles pour n'importe quel contrôle. Les DrawingBrush sont en général stockés dans des dictionnaires de ressource en bon XAML. L'avantage est qu'un graphiste peut à tout moment ré-exporter ces dictionnaires depuis Expression Design et écraser le précédent. Le développeur n'a de son côté qu'à re-compiler l'application et celle-ci est mise à jour en prenant en compte le nouveau dictionnaire. Chacun est bien a sa place dans ce type de flux de production.

      L'import de fichiers FXG, sans être aussi élégante propose le même type de flux de production, voici l'écran d'importation d'un fichier FXG.

      Pour ma part, Flasher depuis pas mal de temps, j'ai conçu chaque élément et exporté le FXG via Flash. Une fois le fichier importé, le premier réflexe consiste à essayer de récupérer les éléments graphiques du FXG au sein de l'interface Blend. Ceux-ci ne sont pas traités comme ressources graphiques mais bien comme contrôles, du coup vous les trouverez dans le panneau assets comme montré ci-dessous.

      La mise à jour fonctionne exactement de la même manière que les DrawingBrush puisque qu'il suffit de modifier le fichier exporté pour que Blend le détecte et vous alerte d'une mise à jour. Attention toutefois si vous ajoutez ou supprimez des éléments, j'ai remarqué qu'il fallait souvent supprimer le FXG du projet puis le ré-importer dans ce cas. Cette importation est moins élégante à ce jour qu'un export sous forme de dictionnaires de ressource mais sait-on jamais peut-être pouvons nous imaginer une amélioration sous forme d'option d'importation dans l'avenir...

      DonutLoader [Custom Control]

      Aucun commentaire


        Pour les besoins d'une production, nous avons eu besoin d'un visuel d'attente (Torus ou Donut Loader) très proche de ce qui se fait déjà déjà sous Windows. Pour cela, j'ai étendu Control puis j'ai ajouté quelques Dependency properties :

        #region Dps
         
        /// 
        /// Set the speed of animation based on
        /// 
        [Category("Common Properties")]
        [Description("Allow to define animation's duration")]
        public TimeSpan Duration
        {
            get { return (TimeSpan)GetValue(DurationProperty); }
            set { SetValue(DurationProperty, value); }
        }
         
        // Using a DependencyProperty as the backing store for SpeedRatio.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DurationProperty =
            DependencyProperty.Register("Duration", typeof(TimeSpan), typeof(DonutLoader), new PropertyMetadata(TimeSpan.FromSeconds(1), new PropertyChangedCallback(OnDurationChanged)));
         
        private static void OnDurationChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var donutLoader = d as DonutLoader;
         
            if (d != null)
            {
                ClockState cs = donutLoader.boucle.GetCurrentState()
         
                donutLoader.boucle.Stop();
         
                donutLoader.daBoucle.Duration = (TimeSpan)e.NewValue;
         
                if (cs == ClockState.Active)
                {
                    donutLoader.boucle.Begin();
                }
            }
        }
         
        /// 
        /// Percent of progression
        /// 
        [Category("Common Properties")]
        [Description("Current progression value")]
        public double Percent
        {
            get { return (double)GetValue(PercentProperty); }
            set { SetValue(PercentProperty, value); }
        }
         
        // Using a DependencyProperty as the backing store for Percent.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PercentProperty =
            DependencyProperty.Register("Percent", typeof(double), typeof(DonutLoader), new PropertyMetadata(0d));
         
        /// 
        /// Allow to  hide percent textBlock
        /// 
        [Category("Common Properties")]
        [Description("Show/Hide progression value")]
        public Visibility PercentVisibility
        {
            get { return (Visibility)GetValue(PercentVisibilityProperty); }
            set { SetValue(PercentVisibilityProperty, value); }
        }
         
        // Using a DependencyProperty as the backing store for PercentVisibility.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PercentVisibilityProperty =
            DependencyProperty.Register("PercentVisibility", typeof(Visibility), typeof(DonutLoader), new PropertyMetadata(Visibility.Visible));
         
        #endregion

        A ce stade, tout fonctionne comme prévu, mais un petit bug m'a pris un peu de temps à résoudre dans les lignes suivantes.

        private void SetOpacityMask()
        {
        BitmapImage bi = new BitmapImage() { UriSource = new Uri("/Tweened.Controls;component/bitmaps/ProgressBitmap.png", UriKind.RelativeOrAbsolute) };
         
             ImageBrush ib = new ImageBrush();
         
             ib.ImageSource = bi;
         
             _DonutFrameworkElement.RenderTransform = new CompositeTransform() { CenterX = .5, CenterY = .5 };
         
             _DonutFrameworkElement.OpacityMask = ib;
        }
         
        private void SetStoryboard()
        {
             boucle.Children.Add(daBoucle);
         
             Storyboard.SetTargetProperty(daBoucle, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.Rotation)"));
         
             daBoucle.From = 0;
         
             daBoucle.To = -360;
         
             daBoucle.RepeatBehavior = RepeatBehavior.Forever;
         
             daBoucle.Duration = Duration;
        }

        Lorsque l'on joue l'animation de rotation par C# ou XAML, l'objet qui subit l'animation disparaît soudainement au runtime. Après avoir passé un peu de temps sur ce bug, j'ai décidé non pas d'animer l'objet lui même mais son remplissage :

        private void SetOpacityMask()
        {
            BitmapImage bi = new BitmapImage() { UriSource = new Uri("/Tweened.Controls;component/bitmaps/ProgressBitmap.png", UriKind.RelativeOrAbsolute) };
         
            ImageBrush ib = new ImageBrush();
         
            ib.ImageSource = bi;
         
            ib.RelativeTransform = new CompositeTransform() { CenterX = .5, CenterY = .5 };
         
            //ancienne version
            //_DonutFrameworkElement.RenderTransform = new CompositeTransform() { CenterX = .5, CenterY = .5 };
         
            _DonutFrameworkElement.OpacityMask = ib;
        }
         
        private void SetStoryboard()
        {
            boucle.Children.Add(daBoucle);
         
            Storyboard.SetTargetProperty(daBoucle, new PropertyPath("(UIElement.OpacityMask).(Brush.RelativeTransform).(CompositeTransform.Rotation)"));
         
            //ancienne version
            //Storyboard.SetTargetProperty(daBoucle, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.Rotation)"));
         
            daBoucle.From = 0;
         
            daBoucle.To = -360;
         
            daBoucle.RepeatBehavior = RepeatBehavior.Forever;
         
            daBoucle.Duration = Duration;
        }

        j'ai donc remplacé la ligne ciblant la propriété à animer :

        Storyboard.SetTargetProperty(daBoucle, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.Rotation)"));

        par :

        Storyboard.SetTargetProperty(daBoucle, new PropertyPath("(UIElement.OpacityMask).(Brush.RelativeTransform).(CompositeTransform.Rotation)"));

        Là, au miracle, plus aucun bug, tout fonctionne parfaitement. C'est la première fois que j'anime, au sein d'un custom contrôle, un objet avec une image en masque d'opacité et j'ai bien perdu 30 minutes là dessus. Si quelqu'un a une idée du pourquoi de ce bug je suis preneur.

        FireStarter Silverlight

        Aucun commentaire

          Illuminez vos compétences Silverlight avec la toute nouvelle session globale Firestarter Silverlight !
          Pour vous raffraichir un peu les idées le Silverlight Firestarter est un événement mondial d'une journée, diffusé en direct et présenté par Scott Guthrie. Vous pourrez à cette occasion directement communiquer avec l'équipe produit Silverlight, vous aurez également accès à des atelier d'auto-formation.

          Suivez le programme :)

          Pour vous inscrire c'est ici.

          Sortie officielle de Windows Phone 7

          Aucun commentaire

            Steve Ballmer et Ralph de la Vega, President & CEO de AT&T Mobility, ont annoncé pour le 21 Octobre la sortie mondiale à la vente de Windows Phone 7. Comme l'on pouvait s'y attendre au vu des précédentes annonces, 3 opérateurs historiques français ainsi que 5 constructueurs sont concernés, pas d'exclusivité en vue. A noter que windows Phone 7 contient une version de office mobile spécialement conçu pour l'OS. Le premier device mobile Windows Phone 7 sera disponible au prix de 29 euros. Pour avoir une vue globale de la plateforme WP7, vous pouvez vous référer à la conférence des teched Microsoft que vous trouverez ici. En attendant de l'avoir entre les mains, quelques devices sont sur les rangs, le Omnia 7 de Samsung, le Optimus 7 de LG et pour complètement innover le HTC HD7; c'est ce dernier qui présente le design le plus épuré avec son large écran de 4,7".

            Silverlight Bing Map for Wordpress [Plugin]

            1 commentaire

              Get Microsoft Silverlight

              Voici un nouveau plugin pour wordpress. L'idée est cette fois de faciliter l'intégration d'une carte interactive basée sur Silverlight Bingmap. Pour cela rien de plus simple, il suffit d'installer le plugin que vous trouverez en téléchargement ici.

              Get Microsoft Silverlight

              Expression Studio 4 version finale disponible

              Aucun commentaire

                La nouvelle version de la suite Expression Studio est dans les bacs ! Cette nouvelle release est déclinée en 3 versions :

                • Expression Studio Ultimate
                • Expression Studio Premium
                • Expression Studio Web professional

                La version Expression Web n'intègre pas le logiciel Expression Blend mais uniquement Expression Design, Web et Encoder. Si vos développements s'orientent vers Silverlight ou WPF, il vous faudra acquérir la version Premium ou Ultimate. Cette politique possède l'avantage de s'adapter aux petits budgets. Pour la version Ultimate uniquement, vous bénéficierez également de Expression Encoder Pro qui offre le support d'une plus grande variété de codecs en import comme en export. Celui-ci pourra notamment gérer de la diffusion de vidéos Smooth Streaming live ou l'encodage H.264 (la comparaison des features est ici). Autre changement de politique côté MSDN, concernant cette fois l'arrivée de numéros de série. Ceux-ci vous permettent d'installer la suite un nombre limité de fois. Il n'y a plus qu'à faire son choix...

                Rosetta stone for Flash and Silverlight

                1 commentaire

                  Pour mon premier poste sur Tweened, je souhaite partager avec vous un petit guide très utile pour tous les flasheurs / flexeurs qui voudraient développer en Silverlight.

                  Il ce trouve ici, et référence dans une colonne les objets avec leur nom connu sous Flash / Flex, et dans l'autre, leur équivalent en Silverlight.

                  Vous pouvez également cliquer sur la double flèche présente tout à droite de la ligne du composant survolé afin d'avoir accès à un descriptif un peux plus approfondit.

                  En espérant que cette ressource vous soit utile.

                  Olivier Destenay
                  Microsoft Student Partner

                  Certificat Silverlight à 50%

                  Aucun commentaire

                    On a l'impression que c'est l'époque des soldes car c'est une super affaire. Depuis Silverlight 4, il est possible de signer les applications Out Of Browser. Cela est très pratique lorsque celles-ci nécessitent des droits d'accès élevés au réseau ou au poste client. Ce poste relaie celui de Tim Heuer concernant la remise de 50% que GoDaddy propose pour tout achat d'une signature vérifiée.

                    Thème Fleur des Salines disponible

                    Aucun commentaire

                      Regart.net diffuse le thème Fleur des salines sur FlashXpress.net en version anglaise ou française. Pour ceux qui aiment bien les beaux thèmes wordpress sobres et efficaces, je vous le recommande chaudement. Celui-ci embarque une Galerie photo en home page (made in Silverlight).

                      Cette galerie repose sur le plugin wordpress du même nom, vous pouvez la télécharger ici. Son principale avantage et de récupérer les images uploader via l'admin wordpress dans votre post.En voici un exemple montrant des capture du thème en question.

                      Get Microsoft Silverlight

                      Si vous souhaitez apprendre à configurer ce thème, j'ai réalisé une petite vidéo muette de 3-4 minutes très pratique que vous pouvez voir sur la WebTv de tweened.org ici.

                      Pour info, ce thème a été utilisé pour le site www.fleurdessalines.fr réalisé par Regart.net.

                      « Previous PageNext Page »