CustomControl ColorChooser and ColorPicker

Aucun commentaire

J'ai récemment eu besoin de contrôles personnalisables de type ColorPicker et ColorChooser, n'en trouvant pas, je les ai conçu from scratch, voici une démo.

Install Microsoft Silverlight

Ceux-ci sont en version bêta mais je pense fournir une version finale d'ici le 15 novembre. En attendant, si vous souhaitez tester ces contrôles et télécharger la dll pour test dans SL3, c'est ici.

Ps : le plugin Silverlight pour WordPress fourni par Tim Heuer est vraiment performant et très utile, merci à lui, je n'utiliserai plus que cette solution :)

Bookmark and Share

LiveMeeting MVPs

Aucun commentaire

    Plusieurs MVPs et MSP, se connaissant depuis quelques années maintenant, ont décidé d’unir leurs efforts pour proposer un ensemble de Live Meetings destinés à une audience de développeurs. Voici la liste des Live Meetings planifiés, n’hésitez pas à y participer en vous inscrivant...

    Voici les stars :)

    Bookmark and Share

    WebsiteSparks Network Partner

    Aucun commentaire

      Regart.net est officiellement devenu Network Partners du nouveau programme WebsiteSpark. Ce dernier s’adresse à celles et ceux qui conçoivent, créent et font le design des sites web : freelances et agences Web ayant jusqu’à 10 employés maxi. Ce programme, qui est valable sur une durée de trois ans à compter de la date d’inscription, offre à ses membres plusieurs avantages et bénéfices qui s’articulent autour de trois axes principaux :

      1. De la visibilité

      2. Des licences gratuites

      3. Du Support technique Professionnel

      Regart.net vous permettra d’accéder aux avantages du programme WebsiteSpark sur candidature. Pour vous inscrire ou demander un parrainage de Regart.net c'est ici :)

      Bookmark and Share

      3DLightEngine Library preview

      4 commentaires

      Je mettrai bientôt à disposition une librairie opensource nommée LightEngine3D. Son but sera de résoudre de manière simple quelques scénarii d'utilisation d'interfaces 3D qui serait assez compliqué à gérer voir impossible directement avec la classe simplifiée PlaneProjection. Celle-ci est basée sur du calcul matricielle et par conséquent la structure Matrix3D. Je porterai également quelques méthodes de Matrix3D fournies par DirectX. Au programme backface culling Z, sorting automatic, Vector3D, Camera et peut-être lumière directionnelle, etc... C'est dans tous les cas un projet de longue haleine mais je n'ai pas non plus envie de faire une usine à gaz. L'idée principale est de créer un mini moteur 3D que vous pourrez facilement étendre par la suite.

      Install Microsoft Silverlight

      Le code utilisé pour créer ce projet est simpliste :

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      
      //on définit un angle d'ouverture de 60°
      double FovY = Matrix3DUtils.DegresToRadians(60); 
      //image affichée par défaut
      Uri BitmapUri= new Uri("Blend3_logo3.jpg", UriKind.Relative);
       
      Element3D E3D;
       
      Scene3D s;
       
      public MainPage()
      {
         // Required to initialize variables
         InitializeComponent();
       
         ResetBtn.Click += new RoutedEventHandler(ResetBtn_Click);
       
         E3D = new Element3D(MonUIElement);
       
         E3D.NormalDirectionChanged += new Element3D.DirectionChanged(E3D_NormalDirectionChanged);
       
         E3D.DotProductChanged += new Element3D.DirectionChanged(E3D_DotProductChanged);
       
         #region Personalize perspective and ViewPort
         /*
         Perspective p = new Perspective(FovY,		            //Angle d'ouverture
         LayoutRoot.ActualWidth / LayoutRoot.ActualHeight,   //Rapport largeur/hauteur
         1.0,                                                //La distance visible la plus proche 
         3000.0);                                            //La distance visible la plus éloignée
       
         Viewport v = new Viewport(LayoutRoot.ActualWidth, LayoutRoot.ActualHeight);
       
         s = new Scene3D(LayoutRoot, p, v);
         */
         #endregion
       
         #region Personalize clip plane
         /*
         s = new Scene3D(LayoutRoot, FovY,1,3000);
         */
         #endregion
       
         #region Personalize Field of view angle
         s = new Scene3D(LayoutRoot, FovY);
         #endregion
      }
       
      //produit scalaire du vecteur caméraObjet par le vecteur de l'axe z objet
      void E3D_DotProductChanged(Element3D sender, int normalDirection)
      {
         ProduitScalaireTxt.Text = sender.DotProduct.ToString();
      }
       
      //Lorsque la direction de la normal par rapport à la caméra change on réaffecte une image
      void E3D_NormalDirectionChanged(Element3D sender, int normalDirection)
      {
         DirectionTxt.Text = normalDirection.ToString();
         Uri BitmapUri = normalDirection == 1 ? new Uri("Blend3_logo3.jpg", UriKind.Relative) : new Uri("Blend3_logo.jpg", UriKind.Relative);
         MonUIElement.Source = new BitmapImage(BitmapUri);
      }
       
      //A chaque fois que la valeur du slider assurant la translation change on réaffecte
      //celle-ci à la propriété adéquate du Element3D et on recalcule la scène
      private void onTranslateXChange(object sender, RoutedPropertyChangedEventArgs<double> e)
      {
         E3D.GlobalOffsetX = e.NewValue;
         s.RenderScene();
      }
      //
      </double>

      Il suffit d'utiliser la classe enveloppante Element3D et d'instancier une nouvelle scène. J'ajouterai très rapidement la classe ContainerElement3D. Par défaut l'objet n'est pas dans un container mais directement dans la Scene3D. Cet exemple montre qu'il est relativement simple d'étendre les capacités existantes de Silverlight en matière de 3D. La prochaine étape, porter une partie des fonctionnalités DirectX...

      Bookmark and Share

      Soirée communautaire FXP

      1 commentaire

        Voici une invitation en bonne et due forme pour la soirée communautaire prévue le jeudi 24 septembre à 18h30. La thématique est consacrée aux beatles et il y aura plein de trucs à gagner que j'énonce pas ici tellement ça claque. Pour vous inscrire c'est ici.

        Bookmark and Share

        Silverlight 3 Final release and Expression Studio RC disponible

        Aucun commentaire

          Silverlight 3 est maintenant disponible en version finale. La suite Expression Studio est elle aussi disponible en version Release Candidate pour sa part. Depuis le temps que j'attendais la sortie, nous allons enfin pouvoir jouer avec tout ça et mettre à jour les applications Silverlight actuellement en bêta. Voici un récapitulatif des nouveautés apportées par Silverlight 3 :

          • GPU support pour la vidéo, comme dans Flash on définiera l’utilisation directement dans le tag de l’object ou directement à l’exécution. A utiliser pour afficher de la vidéo plein écran dans 95% des cas…
          • H264 AAC MPEG4
          • perpective 3D, ici rien d’autre que de la bonne 2.5D comme dans Flash 10.
          • Bitmap & pixel API
          • Pixel Shader effects. Vous pouvez dorénavant utiliser les filtres au sein de Silverlight et même créer les votre grâce au langage HLSL (High Level Shader Language). Ce langage est proche du C est s’apparente pas mal à PixelBender de la plate forme d’Adobe.
          • Deep linking. Je n’ai pas vraiment testé cette fonctionnalité mais il semble qu’elle soit implémentée…
          • Library caching support. Cette fonctionnalité est assez intéressante, elle permet de ne pas télécharger à chaque fois les librairies partagées par plusieurs applications Silverlight.
          • Déploiement du lecteur Silverlight en dehors du navigateur. Grâce à un seul click droit, l’utilisateur peut transformer n’importe quelle applications Silverlight en application bureautique sandboxée. Cette fonctionnalité cible directement la plate forme AIR, mais ne correspond pas exactement au même modèle économique puisqu’il n’y a pas d’installeur proprement dit.
          • Behaviors. Les comportements permettent au graphiste une plus grande autonomie. Ainsi, plus besoin d’un développeur pour créer des interactions utilisateurs. Plus que ça, les comportements reposent sur le pattern decorator. Un développeur peut assez facilement créer des comportements supplémentaires puis les donner aux graphistes pour faciliter les tâches courantes d’interactivités. Je mettrai en ligne plusieurs Behaviors ainsi qu'un tuto vidéo expliquant leur création.
          • API Local Connection pour permettre à deux instance du plugin de communiquer.
          • Dictionnaires de ressources. Cette fonctionnalités permet de partager et d'externaliser simplement les ressource graphiques.
          • Embarquement de polices compressées. Les polices sont compressées au sein d'un fichier .zip et embarquée au sein du fichier XAP.
          Bookmark and Share

          Laurent Bugnion’s MVVM light toolkit for Silverlight and WPF

          1 commentaire

            Laurent Bugnion propose au téléchargement un kit facilitant la conception Model View View Model. Pour rappel, MVVM est une déclinaison du design pattern MVC. Vous pouvez en trouver une explication ici : http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

            Une autre librairie MVVM performante est disponible à cette adresse pour les projets WPF :  http://wpf.codeplex.com/Wiki/View.aspx?title=WPF%20Model-View-ViewModel%20Toolkit.

            Laurent propose quant à lui un mini framework qui s'accorde plus facilement aux développements s'appuyant sur Expression Blend tant pour les projets Silverlight que pour les projets WPF. De ce point de vue, nous manquions cruellement de framework car les solutions existantes sont pour la majeure partie orientée vers des développements WPF et éloignés des contraintes liées à l'utilisation de Blend en production...

            Bookmark and Share

            Sortie annoncée de Silverlight 3 et Expression 3

            2 commentaires

              C'est officiel, Silverlight 3 ainsi que la suite Expression 3 seront tout deux disponibles à partir du 10 juillet. C'est le site ArsTechnica qui donne l'info. Si Microsoft suit la même logique que l'année passée, je pense que nous aurons accès à la release candidate d'ici une à deux semaines. Ce qui permettra de porter ou d'améliorer les applications actuellement produite sur une version 3 bêta Mix ou plus.

              Bookmark and Share

              Librairie ProxyRenderTransform V2

              Aucun commentaire

              proxyRenderTransform.jpg
              Je mets en ligne aujourd'hui la version 2 de la librairie ProxyRenderTransform. Pour rappel, celle-ci utilise les méthodes d'extension pour faciliter l'accès aux noeuds RenderTransform ou leur initialisation. Dans ce dernier cas, la librairie affecte un objet typé TransformGroup à la propriété RenderTransform au sein des objets n'en possédant pas. La collection de transformation est généré de la même manière que Blend pour assurer une compatibilité maximum. Il vous suffit d'ajouter l'assembly ProxyRenderTransform.dll , et vous pourrez accéder très simplement aux noeuds renderTransform de n'importe quel UIElement grâce aux méthodes d'extension :

              • SetX / GetX
              • SetScaleX / GetScaleX
              • SetRotate / GetRotate
              • SetSkewX / SetSkewY

              Vous pouvez également obtenir les chemins d'accès aux noeuds existants grâce à des propriétés statiques. Vous n'avez donc plus besoin de vous en souvenir lorsque vous créez des animations dynamiquement :

              • _SCALE_X_PATH // (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
              • _SCALE_Y_PATH
              • _SKEW_X_PATH
              • _SKEW_Y_PATH
              • _ROTATE_PATH
              • _TRANSLATE_X_PATH
              • _TRANSLATE_Y_PATH

              Pour finir, vous pouvez récupérer les noeuds de transformation eux-même :

              • GetScaleNode
              • GetTranslateNode
              • GetRotateNode
              • GetSkewNode

              Voici un exemple d'utilisation :

              1
              2
              3
              4
              5
              6
              7
              8
              9
              10
              11
              12
              13
              14
              15
              16
              17
              18
              19
              
              void Page_Loaded(object sender, RoutedEventArgs e)
              {
              //any FrameworkElement can now have direct access to his RenderTransform
              rec.SetX(605);
              Debug.WriteLine( rec.GetX());
              //rec.SetX(105);
              //rec.SetRotate(60);
              //rec.SetScaleX(2);
               
              dp.Interval = TimeSpan.FromMilliseconds(10);
              dp.Tick += new EventHandler(dp_Tick);
              dp.Start();
              }
               
              void dp_Tick(object sender, EventArgs e)
              {
              double newX = (double)rec_Copy.GetX() ( 500 - (double)rec_Copy.GetX() ) * .2;
              rec_Copy.SetX(newX);
              }

              Dans cette version, j'ai ajouté l'accès direct au noeud Projection plan...

              La librairie est sous licence libre MS-PL licence sur le portail Code Plex ici.
              N'hésitez pas à poster si vous rencontrez des bugs ou des difficultés d'utilisation.

              Bookmark and Share

              Windows 7 RC

              Aucun commentaire


                La version release candidate de windows seven est accessible aux abonnés MSDN depuis ce matin. J'avais assez envie de changer mon bon vieux Windows Xp, j'ai donc installé 7 sur deux postes dont un mac book pour le tester. Première bonne chose, je n'ai aucun problème de compatibilité, tout fonctionne directement sans heurts. Deuxième bonne nouvelle, sur VMWare, sur un simple macbook c'est rapide et efficace pourtant j'utilise de nombreux logiciels en même temps, Expression Blend, Visual Studio, Office, Photoshop, Flash, etc... On ressent l'effort de Microsoft pour apporter un maximum de performances et de stabilité au système. Seven s'annonce prometteur avec de nombreuses améliorations sur l'ergonomie notamment sans toutefois mimer MacOs, son grand concurrent. La grande nouveauté est l'intégration d'une machine virtuelle XP directement au sein de 7 ce qui permettra de faire tourner n'importe quel programme compatible avec XP. Il faudra tout de même attendre la version finale pour avoir une idée de ce système. La version RC quant à elle devrait être accessible dans le courant du mois de mai pour le grand public...

                Bookmark and Share

                « Previous PageNext Page »