<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Graphic Stream</title><link>http://msmvps.com/blogs/valentin/default.aspx</link><description>Blog about .Net, Managed DirectX, XNA, Silverlight and C#</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Le projet Arcane</title><link>http://msmvps.com/blogs/valentin/archive/2009/10/01/le-projet-arcane.aspx</link><pubDate>Thu, 01 Oct 2009 16:31:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1728793</guid><dc:creator>valentin</dc:creator><slash:comments>22</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1728793</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/10/01/le-projet-arcane.aspx#comments</comments><description>&lt;p&gt;Une autre petite vid&amp;eacute;o de mon editeur en ligne aujourd&amp;#39;hui dans une version WPF.&lt;/p&gt;
&lt;p&gt;J&amp;#39;essayerais de mettre la version avec la gestion des objets 3D avant la fin du mois.&lt;/p&gt;
&lt;p&gt;(Please visit the site to view this media)&lt;/p&gt;
&lt;p&gt;La b&amp;eacute;ta 1 est pr&amp;eacute;vue pour fin decembre.&lt;/p&gt;
&lt;p&gt;Valentin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1728793" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Arcane/default.aspx">Arcane</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/World+Of+Warcraft/default.aspx">World Of Warcraft</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Editeur/default.aspx">Editeur</category></item><item><title>Microsoft Security Essential : L'Anti virus gratuit de Microsoft</title><link>http://msmvps.com/blogs/valentin/archive/2009/09/30/microsoft-security-essential-l-anti-virus-gratuit-de-microsoft.aspx</link><pubDate>Wed, 30 Sep 2009 05:57:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1728374</guid><dc:creator>valentin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1728374</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/09/30/microsoft-security-essential-l-anti-virus-gratuit-de-microsoft.aspx#comments</comments><description>&lt;p&gt;Microsoft a lanc&amp;eacute; hier soir son nouveau programme gratuit offrant une protection contre les virus&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/security_essentials/default.aspx?mkt=fr-fr"&gt;http://www.microsoft.com/security_essentials/default.aspx?mkt=fr-fr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Essay&amp;eacute;, et approuv&amp;eacute; (l&amp;eacute;ger et rapide au premier abord),&lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1728374" width="1" height="1"&gt;</description></item><item><title>Arrivée du Zune HD et sortie du "Microsoft XNA Game Studio 3.1 Zune Extensions"</title><link>http://msmvps.com/blogs/valentin/archive/2009/09/16/arriv-233-e-du-zune-hd.aspx</link><pubDate>Wed, 16 Sep 2009 09:25:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1723760</guid><dc:creator>valentin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1723760</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/09/16/arriv-233-e-du-zune-hd.aspx#comments</comments><description>&lt;p&gt;Le June HD fait aujourd&amp;#39;hui son entr&amp;eacute;e sur le march&amp;eacute; US. Le nouveau baladeur de Microsoft audio-vid&amp;eacute;o frappe plut&amp;ocirc;t&amp;nbsp;fort : Il&amp;nbsp;s&amp;#39;appuie&amp;nbsp; sur un &amp;eacute;cran OLED tactile de 3,3 pouces, une connexion au web et une compatibilit&amp;eacute; avec les principaux formats audio et vid&amp;eacute;o.&amp;nbsp;Il sera vendu 220 et 290 dollars, pour les versions 16 et 32 Go. L&amp;#39;objectif &amp;eacute;tant de concurrencer l&amp;#39;iPod Touch, dont le prix vient justement de baisser, et le Sony Walkman X.&amp;nbsp; On peut acc&amp;eacute;der au 5 millions de morceaux de musique du Zune Music Store en t&amp;eacute;l&amp;eacute;chargement illimit&amp;eacute; moyennant un abonnement mensuel de 14,99 dollars. Le &lt;a href="http://social.zune.net/"&gt;portail Zune&lt;/a&gt; propose aussi des films et des s&amp;eacute;ries TV.&lt;/p&gt;
&lt;p&gt;A priori il est d&amp;eacute;j&amp;agrave; en rupture de stock dans de nombreux magasins.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.geek-touch.com/wp-content/uploads/2009/05/zune.png" border="0" style="max-width:550px;" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Evidemment ce qui nous interesse c&amp;#39;est le cot&amp;eacute; jeu et la partie Xna : Le kiosque Zune&amp;nbsp;en ligne (Zune Marketplace) &amp;nbsp;propose des applications d&amp;eacute;velopp&amp;eacute;es uniquement&amp;nbsp;par Microsoft pour le Zune HD. Pour le moment rien de transcendant (MSN Weather, une calculatrice, des jeux) mais on annonce pour la fin de l&amp;#39;ann&amp;eacute;e des applications pour Facebook et Twitter et des jeux : Project Gotham Racing: Ferrari Edition, Vans Sk8: Pool Service, et Audiosurf.&amp;nbsp; Pour le moment, le Zune Marketplace n&amp;#39;a pas pr&amp;eacute;vu de s&amp;#39;ouvrir aux d&amp;eacute;veloppeurs tiers. &lt;/p&gt;
&lt;p&gt;En outre une annonce a &amp;eacute;t&amp;eacute; faite par la Xna Team (Michael Klucher)&amp;nbsp;sur une version 31 du Xna Game Studio adapt&amp;eacute;e au HD. L&amp;#39;evolution du XGE est d&amp;eacute;sormais disponible ici :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=48f7ba37-8ba7-4d16-8873-0b7f83ef77f9&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=48f7ba37-8ba7-4d16-8873-0b7f83ef77f9&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C&amp;#39;est r&amp;eacute;ellement une tr&amp;egrave;s tr&amp;egrave;s forte innovation pour la Xna qui repousse fortemenet le potentiel commercial du Xna. Dommage qu&amp;#39;il n&amp;#39;y ai pas d&amp;#39;infos sur une Game Market Place &amp;agrave; la Xbox 360.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Les nouveaut&amp;eacute;s du Microsoft XNA Game Studio 3.1 Zune Extensions sont :&lt;/p&gt;
&lt;li&gt;D&amp;eacute;veloppement sur le Zune HD media player. &lt;/li&gt;
&lt;li&gt;Ajout d&amp;#39;une api&amp;nbsp;Touch&amp;nbsp;au XNA Framework d&amp;eacute;di&amp;eacute;e au Zune HD. &lt;/li&gt;
&lt;li&gt;Ajout d&amp;#39;une API Accelerometer pour jouer sur la velocit&amp;eacute; des mouvement sur le touch. &lt;/li&gt;
&lt;p&gt;Une petite vid&amp;eacute;o sympa sur les possbilit&amp;eacute;s touch de l&amp;#39;appareil&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=N4Y1LehYFK0"&gt;http://www.youtube.com/watch?v=N4Y1LehYFK0&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1723760" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Zune+HD/default.aspx">Zune HD</category></item><item><title>Kickapps : Une super aubaine pour les fans de développement mobile !</title><link>http://msmvps.com/blogs/valentin/archive/2009/09/03/kickapps-une-super-aubaine-pour-les-fans-de-d-233-veloppement-mobile.aspx</link><pubDate>Thu, 03 Sep 2009 08:24:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720456</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1720456</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/09/03/kickapps-une-super-aubaine-pour-les-fans-de-d-233-veloppement-mobile.aspx#comments</comments><description>&lt;p&gt;Microsoft a cr&amp;eacute;&amp;eacute; sur la&amp;nbsp;MSDN un espace qui met en avant un ensemble d&amp;#39;applications pour Windows Mobile &amp;agrave; destination de ceux qui d&amp;eacute;sireraient faire du dev sur cette plateforme.&lt;/p&gt;
&lt;p&gt;Chaque application s&amp;#39;accompagne d&amp;#39;un un descriptif clair, d&amp;#39;une vid&amp;eacute;o, de screenshots et surtout des conseils de l&amp;rsquo;&amp;eacute;quipe de d&amp;eacute;veloppement.&lt;/p&gt;
&lt;p&gt;Le tout est t&amp;eacute;l&amp;eacute;chargeable&amp;nbsp;gratuitement&amp;nbsp; !&lt;/p&gt;
&lt;p&gt;Voici le lien vers l&amp;rsquo;espace en question : &lt;a href="http://msdn.microsoft.com/fr-fr/windowsmobile/msdn.kickapps.aspx"&gt;http://msdn.microsoft.com/fr-fr/windowsmobile/msdn.kickapps.aspx&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Un bon point pour s&amp;#39;initier dans cet univers du client side en plein devenir &amp;agrave; l&amp;#39;approche courrant octobre de Windows Mobile 6.5 et des pr&amp;eacute;mices du Windows Phone&lt;/p&gt;
&lt;p&gt;(tiens d&amp;#39;ailleur petit lien -&amp;gt; &lt;a href="http://www.microsoft.com/presspass/press/2009/sep09/09-01WindowsPhoneAvailablePR.mspx"&gt;http://www.microsoft.com/presspass/press/2009/sep09/09-01WindowsPhoneAvailablePR.mspx&lt;/a&gt;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720456" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Le WriteableBitmap avec Silverlight 3</title><link>http://msmvps.com/blogs/valentin/archive/2009/08/28/le-writeablebitmap-avec-silverlight-3.aspx</link><pubDate>Fri, 28 Aug 2009 13:15:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1718931</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1718931</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/08/28/le-writeablebitmap-avec-silverlight-3.aspx#comments</comments><description>&lt;p&gt;Le WriteableBitmap est l&amp;#39;une des &amp;eacute;volutions majeure de Silverlight 3.&lt;/p&gt;
&lt;p&gt;Il permet de repousser les limites d&amp;#39;affichage de Silverlight, cantonn&amp;eacute; jusque l&amp;agrave; au vectoriel, en donnant au d&amp;eacute;veloppeur la possibilit&amp;eacute; de travail au niveau du Pixel. Avant Silverlight 3.0 la g&amp;eacute;n&amp;eacute;ration &amp;agrave; la vol&amp;eacute;e d&amp;#39;images n&amp;#39;&amp;eacute;tait pas possible nativement. Il fallait soit t&amp;eacute;l&amp;eacute;charger l&amp;#39;image g&amp;eacute;n&amp;eacute;r&amp;eacute;e depuis un serveur soit cr&amp;eacute;er son propre g&amp;eacute;n&amp;eacute;rateur/encodeur. Avec WriteableBitmap (qui h&amp;eacute;rite de BitmapSource) la g&amp;eacute;n&amp;eacute;ration d&amp;#39;images &amp;agrave; partir d&amp;#39;algorithmes, de contr&amp;ocirc;les ou d&amp;#39;instruction est r&amp;eacute;ellement un jeu d&amp;#39;enfant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;G&amp;eacute;n&amp;eacute;ration &amp;agrave; partir d&amp;#39;un contr&amp;ocirc;le&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Quelques r&amp;egrave;gles &amp;agrave; prendre en compte :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le contr&amp;ocirc;le doit avoir une taille sup&amp;eacute;rieure &amp;agrave; new Size(0,0) evidemment.&lt;/li&gt;
&lt;li&gt;Le contr&amp;ocirc;le doit appartenir &amp;agrave; l&amp;#39;arborescence visuelle.&lt;/li&gt;
&lt;li&gt;Le contr&amp;ocirc;le doit &amp;ecirc;tre visible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le constructeur de la classe WriteableBitmap permet de charger un contr&amp;ocirc;le sous la forme d&amp;#39;une image en une instruction :&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:courier new,courier;"&gt;Image image = new Image();//le controle chager&lt;br /&gt;BitmapImage source = new BitmapImage();&lt;br /&gt;source.UriSource = new Uri(&amp;quot;./Images/tunnelstonetex.png&amp;quot;, UriKind.Relative);&lt;br /&gt;image.Source = source;&lt;br /&gt;this.LayoutRoot.Children.Add(image);&lt;br /&gt;this.texture = new WriteableBitmap(image, null);//on charge le rendu de la texture dans la WriteableBitmap&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Le second param&amp;egrave;tre du contructeur WriteableBitmap permet de sp&amp;eacute;cifier une transformation &amp;agrave; appliquer au rendu de l&amp;#39;objet avant sa &amp;quot;rasterisation&amp;quot; en image.&amp;nbsp; WriteableBitmap poss&amp;egrave;de une m&amp;eacute;thode nomm&amp;eacute;e Render qui r&amp;eacute;alise le m&amp;ecirc;me travail.&amp;nbsp;Il est en effet&amp;nbsp;possible de cr&amp;eacute;er aussi une image vide en sp&amp;eacute;cifiant simplement la largeur et la hauteur de l&amp;#39;image&amp;nbsp; &amp;agrave; cr&amp;eacute;er afin de r&amp;eacute;aliser un rendu ult&amp;eacute;rieurement :&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:courier new,courier;"&gt;this.generatedTexture = new WriteableBitmap(400, 300);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;Modification dynamique&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Pour montrer la puissance de cette classe nous allons r&amp;eacute;aliser un rendu visuel dynamique bas&amp;eacute; sur l&amp;#39;effet du tunnel si cher &amp;agrave; Vandevenne. Le but sera, au travers d&amp;#39;un dispatcher de modifier le contenu d&amp;#39;une texture &amp;agrave; la vol&amp;eacute;e &amp;agrave; partir de valeur extraites d&amp;#39;un algorithme. Cette texture sera alors appliqu&amp;eacute;e au background de notre contr&amp;ocirc;le root &amp;agrave; l&amp;#39;aide d&amp;#39;un brush.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Lorsque la WritableBitmap est cr&amp;eacute;&amp;eacute;e, l&amp;#39;acc&amp;egrave;s aux pixels de l&amp;#39;image se fait simplement au travers du membre Pixels (array de type int). Attention &amp;agrave; bien noter que l&amp;#39;encodage des pixels de l&amp;#39;image se fait en BGRA. L&amp;#39;acc&amp;egrave;s aux diff&amp;eacute;rentes composantes d&amp;#39;une couleur ainsi cod&amp;eacute;e se fait simplement au travers de ce type d&amp;#39;instructions :&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#008000;font-size:x-small;"&gt;&lt;span style="color:#008000;font-size:x-small;"&gt;
&lt;p&gt;byte B = (byte)(pixel &amp;amp; 0xFF); pixel &amp;gt;&amp;gt;= 8;&lt;br /&gt;byte G = (byte)(pixel &amp;amp; 0xFF); pixel &amp;gt;&amp;gt;= 8;&lt;br /&gt;byte R = (byte)(pixel &amp;amp; 0xFF); pixel &amp;gt;&amp;gt;= 8;&lt;br /&gt;byte A = (byte)(pixel);&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Les membres PixelWidth et PixelHeight donnent respectivement la largeur et la hauteur de la WriteableBitmap. En gros l&amp;#39;array Pixel est de taille PixelWidth*PixelHeight. Mais attention &amp;agrave; ne surtout pas utiliser ces membres dans une phase de g&amp;eacute;n&amp;eacute;ration de texture, c&amp;#39;est &amp;agrave; dire une phase o&amp;ugrave; les performances doivent &amp;ecirc;tre optimales. L&amp;#39;acc&amp;egrave;s &amp;agrave; l&amp;#39;accesseur de ces deux propri&amp;eacute;t&amp;eacute;s est extremement lent (DepepdencyProperty et instructions it&amp;eacute;ratives ne font pas bon m&amp;eacute;nage). On ciblera un pixel particulier sur l&amp;#39;image &amp;agrave; g&amp;eacute;n&amp;eacute;rer de cette mani&amp;egrave;re :&lt;/p&gt;
&lt;p&gt;this.generatedTexture.Pixels[x + y * generatedTextureWidth] = color;&lt;/p&gt;
&lt;p&gt;Dans cette instruction x et y repr&amp;eacute;sentent les &amp;quot;coordonn&amp;eacute;es&amp;quot;&amp;nbsp;du pixel &amp;agrave; cibler dans la texture. Pixels &amp;eacute;tait un array &amp;agrave; une dimension nous multiplions y par la largeur de la texture (le Stride). La valeur color est un entier qui repr&amp;eacute;sente la couleur &amp;agrave; appliquer en (x,y).&lt;/p&gt;
&lt;p&gt;Voil&amp;agrave; c&amp;#39;est &amp;agrave; peu pr&amp;egrave;s tout ce qu&amp;#39;il y&amp;#39;a &amp;agrave; savoir su WriteableBitmap. Peut on imaginer plus simple ? Cet article s&amp;#39;accompagne d&amp;#39;un sample t&amp;eacute;l&amp;eacute;chargeable &lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursSilverlight.ArticleWriteableBitmap/7838.SilverlightWriteableBitmap.zip"&gt;ici&lt;/a&gt;. Si vous le lancez vous obtenez la sortie suivante : &lt;/p&gt;
&lt;p&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursSilverlight.ArticleWriteableBitmap/7532.Image1.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursSilverlight.ArticleWriteableBitmap/7532.Image1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Utilisation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les contextes d&amp;#39;utilisation de la WriteableBitmap sont multiples. Pour les jeux vid&amp;eacute;os elle offre l&amp;#39;opportunit&amp;eacute; de pouvoir travailler comme nous l&amp;#39;avons dit au niveau du pixel a la mani&amp;egrave;re de shaders :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="618" width="698" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursSilverlight.ArticleWriteableBitmap/8422.Image2.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;br /&gt;&lt;span style="font-size:xx-small;"&gt;Oui, je suis un grand fan de Might and Magic :)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Pour des outils professionnels elle offre de nombreuses possibilit&amp;eacute;s comme par exemple une zoombox :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="820" width="756" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursSilverlight.ArticleWriteableBitmap/5282.Image3.png" border="0" style="vertical-align:middle;border:0;" alt="" /&gt;&lt;br /&gt;&lt;span style="font-size:xx-small;"&gt;Un controle que je vendais en ind&amp;eacute;pendant et que j&amp;#39;ai pu refaire &amp;agrave; la sauce Silvelight gr&amp;acirc;ce &amp;agrave; WriteableBitmap&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ou encore de pouvoir simplement et efficacement r&amp;eacute;aliser des effets graphiques comme le montre le sample de cet article.&lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;
&lt;p&gt;Valentin Billotte&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1718931" width="1" height="1"&gt;</description><enclosure url="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursSilverlight.ArticleWriteableBitmap/7838.SilverlightWriteableBitmap.zip" length="950085" type="application/x-compressed" /><category domain="http://msmvps.com/blogs/valentin/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Article/default.aspx">Article</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/WriteableBitmap/default.aspx">WriteableBitmap</category></item><item><title>Projet Natal</title><link>http://msmvps.com/blogs/valentin/archive/2009/07/31/projet-natal.aspx</link><pubDate>Fri, 31 Jul 2009 06:38:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1711276</guid><dc:creator>valentin</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1711276</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/07/31/projet-natal.aspx#comments</comments><description>&lt;p&gt;Microsoft a marqu&amp;eacute; les esprits avec la pr&amp;eacute;sentation de son projet Natal lors de l&amp;#39;E3, qui vise &amp;agrave; &amp;eacute;liminer purement et simplement la manette de jeu, via la perception des mouvements du joueur. Si le projet est attendu au mieux &amp;agrave; la fin de l&amp;#39;ann&amp;eacute;e 2010, il devrait n&amp;eacute;anmoins faire date dans le secteur.


&lt;script src="http://msmvps.com/scripts/tooltip/tooltip.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dailymotion.com/video/x9gsxe_projet-natal-microsoft_videogames"&gt;http://www.dailymotion.com/video/x9gsxe_projet-natal-microsoft_videogames&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Miam quand le Xna Framework g&amp;eacute;rera &amp;ccedil;a !&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1711276" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Natal/default.aspx">Natal</category></item><item><title>Annexe : Intégration de Xna dans WPF</title><link>http://msmvps.com/blogs/valentin/archive/2009/07/20/annexe-int-233-gration-de-xna-dans-wpf.aspx</link><pubDate>Mon, 20 Jul 2009 11:58:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1703480</guid><dc:creator>valentin</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1703480</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/07/20/annexe-int-233-gration-de-xna-dans-wpf.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img height="24" width="24" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin/sommaire.png" align="absMiddle" border="1" style="width:24px;height:24px;" alt="" /&gt;&lt;span style="background-color:#ffff00;"&gt;Retourner au &lt;/span&gt;&lt;a href="http://msmvps.com/blogs/valentin/archive/2007/03/30/tutoriaux-xna-sommaire-g-n-ral.aspx"&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;span style="color:#3399ff;"&gt;sommaire des cours&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Il existe de nombreuses m&amp;eacute;thodes pour afficher des sc&amp;egrave;nes 3D &amp;agrave; base de Xna dans un environnement WPF. Certaines souffrent de probl&amp;egrave;mes de lenteur (r&amp;eacute;alis&amp;eacute;es le plus souvent &amp;agrave; base de WindowsFormHost), d&amp;rsquo;autres ne permettent qu&amp;rsquo;une interaction limit&amp;eacute;e avec les contr&amp;ocirc;les et l&amp;rsquo;interface WPF. R&amp;eacute;aliser des affichages multiples comme on peut en avoir dans des logiciels comme Maya devient alors probl&amp;eacute;matique&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/7532.annexe3_2D00_1.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/7532.annexe3_2D00_1.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Il existe pourtant un moyen, relativement simple d&amp;rsquo;arriver &amp;agrave; ses fins. Ce moyen consiste tout simplement &amp;agrave; donner une impression visuelle &amp;agrave; l&amp;rsquo;utilisateur d&amp;rsquo;une int&amp;eacute;gration Xna parfaite dans un widget WPF alors qu&amp;rsquo;il n&amp;rsquo;en est rien. La cl&amp;eacute; de cet effet r&amp;eacute;side dans une parfaite manipulation des fen&amp;ecirc;tres.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Principe&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Nous voulons pouvoir int&amp;eacute;grer notre sc&amp;egrave;ne Xna dans une interface WPF de la m&amp;ecirc;me mani&amp;egrave;re que nous int&amp;eacute;grons un Canvas ou un quelconque widget &amp;agrave; une interface. Or le meilleur moyen d&amp;rsquo;afficher une sc&amp;egrave;ne 3D en Xna est de l&amp;rsquo;incorporer dans une fen&amp;ecirc;tre. Impossible en effet d&amp;rsquo;obtenir le handle de tout contr&amp;ocirc;le en WPF comme on peut le faire en Winform. L&amp;rsquo;astuce consiste alors &amp;agrave; r&amp;eacute;&amp;eacute;crire une partie du framework Xna tournant autour de la classe Game. Le but &amp;eacute;tant de faire h&amp;eacute;riter une nouvelle classe Game d&amp;rsquo;un Panel (dans notre cas un Canvas) afin de pouvoir l&amp;rsquo;int&amp;eacute;grer dans l&amp;rsquo;arborescence visuel WPF. La surface visuelle de ce panel sera ainsi la zone d&amp;rsquo;affichage de la sc&amp;egrave;ne Xna li&amp;eacute;e. Pourtant nous venons de dire qu&amp;rsquo;il n&amp;rsquo;&amp;eacute;tait pas possible d&amp;rsquo;obtenir un handle d&amp;rsquo;un contr&amp;ocirc;le visuel qui n&amp;rsquo;h&amp;eacute;rite pas de Window. Comment y afficher de la 3D avec Xna donc&amp;nbsp;? Nous allons tout simplement afficher une fen&amp;ecirc;tre sans bordure exactement au dessus de ce panel. Cette fen&amp;ecirc;tre sera toujours au dessus lorsque l&amp;rsquo;application aura le focus et que le panel sera visible, et sera cach&amp;eacute;e dans le cas contraire. De m&amp;ecirc;me, lorsque le panel n&amp;rsquo;est pas visible, nous stopperons l&amp;rsquo;activit&amp;eacute; du jeu.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Chaque modification de la taille ou de la position du panel entrainera une modification &amp;eacute;quivalente chez la fen&amp;ecirc;tre sus-jacente.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;img height="334" width="597" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/6036.annexe3_2D00_2.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Cette fen&amp;ecirc;tre se trouvant donc exactement au dessus du panel et ayant une taille identique l&amp;rsquo;illusion est parfaite.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;R&amp;eacute;alisation&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;La premi&amp;egrave;re &amp;eacute;tape consiste donc &amp;agrave; r&amp;eacute;&amp;eacute;crire une partie des classes de l&amp;rsquo;assembly Microsoft.Xna.Framework et Microsoft.Xna.Framework.Game. Ce afin de s&amp;rsquo;&amp;eacute;manciper du fonctionnement de base de la classe Game trop fortement coupl&amp;eacute;e &amp;agrave; un fonctionnement sur fen&amp;ecirc;tre unique. Le projet Arcane.Xna.Presentation reprend donc une partie des classes de ces assemblies pour une utilisation avec WPF.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/1072.annexe3_2D00_3.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Rien de bien compliqu&amp;eacute;. Seules les classes Game et GameHost sont r&amp;eacute;ellement int&amp;eacute;ressantes ici.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;La classe Game comme pr&amp;eacute;cis&amp;eacute; pr&amp;eacute;c&amp;eacute;demment correspond &amp;agrave; la zone d&amp;rsquo;affichage de nos sc&amp;egrave;nes 3D dans les interfaces utilisateurs WPF. Elle h&amp;eacute;rite de Canvas. L&amp;rsquo;utilisation de Canvas r&amp;eacute;pond &amp;agrave; un besoin bien particulier que nous pr&amp;eacute;senterons plus loin. La classe Game ne se diff&amp;eacute;rencie de la classe Game de l&amp;rsquo;assembly Microsoft.Xna.Framework.Game que par quelques membres. Tout d&amp;rsquo;abord elle poss&amp;egrave;de un membre de type GameHost qui est en fait la fen&amp;ecirc;tre se positionnant juste au dessus. Elle poss&amp;egrave;de de m&amp;ecirc;me un membre nomm&amp;eacute; _tichGenerator qui va permettre de mettre &amp;agrave; jour l&amp;rsquo;affichage &amp;agrave; intervalle r&amp;eacute;guliers.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Le constructeur initialise ses membres ainsi&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;this&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;._window = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GameHost&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;this&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;._window.Closed += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;(_window_Closed);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;this&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;._tickGenerator = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DispatcherTimer&lt;/span&gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;this&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;._tickGenerator.Tick += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;(_tickGenerator_Tick);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Il commence par cr&amp;eacute;er la fen&amp;ecirc;tre qui sera situ&amp;eacute;e au dessus de lui, et enregistre l&amp;rsquo;&amp;eacute;v&amp;eacute;nement Closed afin de fermer la sc&amp;egrave;ne 3D. L&amp;rsquo;object de type DispatcherTimer est utilis&amp;eacute; pour la boucle de jeu et permet donc d&amp;rsquo;appeler de mani&amp;egrave;re r&amp;eacute;guli&amp;egrave;re les m&amp;eacute;thodes Update et Draw. Sa v&amp;eacute;locit&amp;eacute; d&amp;eacute;pend de la propri&amp;eacute;t&amp;eacute; IsFixedTimeStep.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Dernier &amp;eacute;l&amp;eacute;ment important, l&amp;rsquo;enregistrement de l&amp;rsquo;&amp;eacute;v&amp;eacute;nement IsVisibleChange&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;this&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;.IsVisibleChanged += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DependencyPropertyChangedEventHandler&lt;/span&gt;(GameCanvas_IsVisibleChanged);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;L&amp;rsquo;activation du DispatcherTimer est en fonction de cette visibilit&amp;eacute;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;La classe GameHost est tout aussi simple. Elle cr&amp;eacute;&amp;eacute; une fen&amp;ecirc;tre sans bordure, invisible sur la barre des t&amp;acirc;ches et qui enregistre l&amp;rsquo;&amp;eacute;v&amp;eacute;nement SizeChanged du panel Xna et LocationChanged de la fen&amp;ecirc;tre de plus haut niveau. Ces deux &amp;eacute;v&amp;eacute;nements lui permettent de toujours &amp;ecirc;tre au dessus du panel Xna en effectuant un appel &amp;agrave; la m&amp;eacute;thode UpdateBounds&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; UpdateBounds()&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;"&gt;this&lt;/span&gt;.IsVisible)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;GeneralTransform&lt;/span&gt; gt = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.game.TransformToVisual(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.TopLevelWindow);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Width = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.game.ActualWidth;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Height = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.game.ActualHeight;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Left = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.TopLevelWindow.Left + gt.Transform(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Point&lt;/span&gt;(0, 0)).X;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Top = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.TopLevelWindow.Top + gt.Transform(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Point&lt;/span&gt;(0, 0)).Y;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Cette m&amp;eacute;thode d&amp;eacute;termine la position de la fen&amp;ecirc;tre courante en se basant sur la fen&amp;ecirc;tre de plus haut niveau (la fen&amp;ecirc;tre contenant le panel Xna de la classe Game). Elle lui affecte en outre, la m&amp;ecirc;me largeur et hauteur que le panel Xna.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;L&amp;agrave; encore la fen&amp;ecirc;tre s&amp;rsquo;enregistre sur l&amp;rsquo;&amp;eacute;v&amp;eacute;nement IsVisibleChange de ce dernier afin de se rendre visible ou non.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Premier Exemple&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Nous baserons nos exemple sur le framework AvalonDock (&lt;/span&gt;&lt;a href="http://www.codeplex.com/AvalonDock"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;http://www.codeplex.com/AvalonDock&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;), un moyen efficace de cr&amp;eacute;er des interfaces dockable &amp;agrave; la Visual Studio tr&amp;egrave;s facilement. Un moyen aussi pour nous de montrer la puissance et la simplicit&amp;eacute; de notre syst&amp;egrave;me dans des interfaces WPF tr&amp;egrave;s avanc&amp;eacute;es.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Notre solution contient donc un projet nomm&amp;eacute; Demo qui correspond au projet d&amp;rsquo;exemple d&amp;rsquo;AvanlonDock l&amp;eacute;g&amp;egrave;rement modifi&amp;eacute;. Nous avons ajout&amp;eacute; une classe h&amp;eacute;ritant de Game qui va afficher un cube tournant sur lui-m&amp;ecirc;me.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Cette classe a tout simplement &amp;eacute;t&amp;eacute; extraite d&amp;rsquo;une application Xna pur pour &amp;ecirc;tre ajout&amp;eacute; dans ce projet, et ce, sans aucune modification (ou presque)&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RotatingCubeGame&lt;/span&gt; : Arcane.Xna.Presentation.&lt;span style="color:#2b91af;"&gt;Game&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#region&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt; Fields&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Arcane.Xna.Presentation.&lt;span style="color:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt; graphics;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SpriteBatch&lt;/span&gt; spriteBatch;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;BasicEffect&lt;/span&gt; effect;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;VertexPositionColor&lt;/span&gt;[] vertices;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt; position = &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.Zero;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt; size = &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.One;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;VertexBuffer&lt;/span&gt; vertexBuffer;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IndexBuffer&lt;/span&gt; indexBuffer;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#endregion&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#region&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt; Constructors&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; RotatingCubeGame()&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (!(System.ComponentModel.&lt;span style="color:#2b91af;"&gt;DesignerProperties&lt;/span&gt;.GetIsInDesignMode(&lt;span style="color:blue;"&gt;this&lt;/span&gt;)))&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;graphics = &lt;span style="color:blue;"&gt;new&lt;/span&gt; Arcane.Xna.Presentation.&lt;span style="color:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Content.RootDirectory = &lt;span style="color:#a31515;"&gt;&amp;quot;Content&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#endregion&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Allows the game to perform any initialization it needs to before starting to run.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; This is where it can query for any required services and load any non-graphic&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; related content.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Calling base.Initialize will enumerate through any components&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; and initialize them as well.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize()&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Initialize();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// TODO: Add your initialization logic here&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.IsFullScreen = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.PreferredBackBufferWidth = 800;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.PreferredBackBufferHeight = 600;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.ApplyChanges();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Window.Title = &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.InitializeVertices();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.InitializeIndices();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; InitializeVertices()&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;VertexPositionColor&lt;/span&gt;[ 8 ];&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[0].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(-10f, -10f, 10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[0].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Yellow;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[1].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(-10f, 10f, 10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[1].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Green;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[2].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(10f, 10f, 10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[2].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Blue;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[3].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(10f, -10f, 10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[3].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Black;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[4].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(10f, 10f, -10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[4].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Red;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[5].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(10f, -10f, -10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[5].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Violet;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[&amp;nbsp;6 ].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(-10f, -10f, -10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[ 6 ].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Orange;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[7].Position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(-10f, 10f, -10f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vertices[7].Color = &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.Gray;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.vertexBuffer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;VertexBuffer&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice, &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;VertexPositionColor&lt;/span&gt;), 8, &lt;span style="color:#2b91af;"&gt;BufferUsage&lt;/span&gt;.WriteOnly);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.vertexBuffer.SetData(vertices);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; InitializeIndices()&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;short&lt;/span&gt;[] indices = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:blue;"&gt;short&lt;/span&gt;[36]{&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0,1,2, &lt;span style="color:green;"&gt;//face devant&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;0,2,3,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;3,2,4, &lt;span style="color:green;"&gt;//face droite&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;3,4,5,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;5,4,7, &lt;span style="color:green;"&gt;//face arri&amp;egrave;re&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;5,7,6,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6,7,1, &lt;span style="color:green;"&gt;//face gauche&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6,1,0,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6,0,3, &lt;span style="color:green;"&gt;//face bas&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;6,3,5,&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1,7,4, &lt;span style="color:green;"&gt;//face haut&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1,4,2};&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.indexBuffer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IndexBuffer&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice, &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:blue;"&gt;short&lt;/span&gt;), 36, &lt;span style="color:#2b91af;"&gt;BufferUsage&lt;/span&gt;.WriteOnly);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.indexBuffer.SetData(indices);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; LoadContent will be called once per game and is the place to load&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; all of your content.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; LoadContent()&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// Create a new SpriteBatch, which can be used to draw textures.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;spriteBatch = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SpriteBatch&lt;/span&gt;(GraphicsDevice);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// TODO: use this.Content to load your game content here&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.effect = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;BasicEffect&lt;/span&gt;(graphics.GraphicsDevice, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.effect.View = (&lt;span style="color:#2b91af;"&gt;Matrix&lt;/span&gt;.CreateLookAt(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(20, 30, -50), &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.Zero, &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.Up));&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.effect.Projection = (&lt;span style="color:#2b91af;"&gt;Matrix&lt;/span&gt;.CreatePerspectiveFieldOfView(&lt;span style="color:#2b91af;"&gt;MathHelper&lt;/span&gt;.PiOver4, &lt;span style="color:blue;"&gt;this&lt;/span&gt;.GraphicsDevice.Viewport.AspectRatio, 0.1f, 100f));&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.effect.VertexColorEnabled = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Allows the game to run logic such as updating the world,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; checking for collisions, gathering input and playing audio.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param name=&amp;quot;gameTime&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Provides a snapshot of timing values.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Update(&lt;span style="color:#2b91af;"&gt;GameTime&lt;/span&gt; gameTime)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState()[&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Up] == &lt;span style="color:#2b91af;"&gt;KeyState&lt;/span&gt;.Down)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;position += &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.Up;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState()[&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Down] == &lt;span style="color:#2b91af;"&gt;KeyState&lt;/span&gt;.Down)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;position += &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.Down;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState()[&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Left] == &lt;span style="color:#2b91af;"&gt;KeyState&lt;/span&gt;.Down)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;position += &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.Left;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState()[&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Right] == &lt;span style="color:#2b91af;"&gt;KeyState&lt;/span&gt;.Down)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;position += &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;.Right;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState()[&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.PageUp] == &lt;span style="color:#2b91af;"&gt;KeyState&lt;/span&gt;.Down)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;size += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(0.1f, 0.1f, 0.1f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState()[&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.PageDown] == &lt;span style="color:#2b91af;"&gt;KeyState&lt;/span&gt;.Down)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;size -= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector3&lt;/span&gt;(0.1f, 0.1f, 0.1f);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// Allows the default game to exit on Xbox 360 and Windows&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;GamePad&lt;/span&gt;.GetState(&lt;span style="color:#2b91af;"&gt;PlayerIndex&lt;/span&gt;.One).Buttons.Back == &lt;span style="color:#2b91af;"&gt;ButtonState&lt;/span&gt;.Pressed)&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Exit();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;float&lt;/span&gt; fAngle = (&lt;span style="color:blue;"&gt;float&lt;/span&gt;)gameTime.TotalGameTime.TotalSeconds;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:green;font-size:10pt;mso-no-proof:yes;"&gt;//la transformation en elle m&amp;ecirc;me&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Matrix&lt;/span&gt; world = &lt;span style="color:#2b91af;"&gt;Matrix&lt;/span&gt;.CreateRotationY(fAngle) * &lt;span style="color:#2b91af;"&gt;Matrix&lt;/span&gt;.CreateRotationX(fAngle)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;* &lt;span style="color:#2b91af;"&gt;Matrix&lt;/span&gt;.CreateScale(size)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;* &lt;span style="color:#2b91af;"&gt;Matrix&lt;/span&gt;.CreateTranslation(position);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.effect.World = (world);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Update(gameTime);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; This is called when the game should draw itself.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param name=&amp;quot;gameTime&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Provides a snapshot of timing values.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Draw(&lt;span style="color:#2b91af;"&gt;GameTime&lt;/span&gt; gameTime)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice.Vertices[0].SetSource(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.vertexBuffer, 0, &lt;span style="color:#2b91af;"&gt;VertexPositionColor&lt;/span&gt;.SizeInBytes);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice.Indices = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.indexBuffer;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice.VertexDeclaration = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;VertexDeclaration&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice, &lt;span style="color:#2b91af;"&gt;VertexPositionColor&lt;/span&gt;.VertexElements);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;graphics.GraphicsDevice.Clear(&lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.CornflowerBlue);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// TODO: Add your drawing code here&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.effect.Begin();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;EffectPass&lt;/span&gt; pass &lt;span style="color:blue;"&gt;in&lt;/span&gt; effect.CurrentTechnique.Passes)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pass.Begin();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.graphics.GraphicsDevice.DrawIndexedPrimitives(&lt;span style="color:#2b91af;"&gt;PrimitiveType&lt;/span&gt;.TriangleList, 0, 0, 8, 0, 12);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pass.End();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;effect.End();&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Draw(gameTime);&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Rien de bien compliqu&amp;eacute; ici (le code est extrait de &lt;a target="_blank" href="http://msmvps.com/blogs/valentin/archive/2007/01/18/xna-tutorial-6-les-indices.aspx"&gt;l&amp;rsquo;article 6&lt;/a&gt;).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;La premi&amp;egrave;re modification est de faire h&amp;eacute;riter la classe RotatingCubeGame de l&amp;rsquo;objet Game de notre assembly et non celle de l&amp;rsquo;assembly Microsoft.Xna.Framework.Game. La seconde modification consiste &amp;agrave; entourer les initialisations r&amp;eacute;alis&amp;eacute;es dans le constructeur de&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Afin de s&amp;rsquo;assurer que notre jeu ne sera pas en partie cr&amp;eacute;&amp;eacute; dans le designer de Visual Studio. Le reste est tr&amp;egrave;s simple. Nous avons juste remplac&amp;eacute; le contenu de chaque DockablePane dans le code Xaml de Window1 par un&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;Demo&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;:&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;RotatingCubeGame&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;Demo&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;:&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;RotatingCubeGame&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Le resultat nous donne&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/5270.annexe3_2D00_4.png"&gt;&lt;img height="444" width="619" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/5270.annexe3_2D00_4.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Bien &amp;eacute;videmment notre syst&amp;egrave;me respecte les avantage d&amp;rsquo;AvalonDock en permettant un docking puissant&amp;nbsp;et ce, sans perturber nos sc&amp;egrave;ne 3D:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/5282.annexe3_2D00_5.png"&gt;&lt;img height="904" width="612" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/5282.annexe3_2D00_5.png" border="0" style="vertical-align:middle;border:black 2px solid;" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Pas mal, mais on peut faire mieux.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Int&amp;eacute;gration de Widgets&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Pourquoi ne pas tenter d&amp;rsquo;afficher des widgets (bouton, label, Grid, Canvas, &amp;hellip;) dans notre sc&amp;egrave;ne 3D pour faire une int&amp;eacute;gration avec WPF de mani&amp;egrave;re parfaite. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Nous pourrions &amp;ecirc;tre tent&amp;eacute;s d&amp;rsquo;ajouter ces &amp;eacute;l&amp;eacute;ments directement &amp;agrave; la fen&amp;ecirc;tre GameHost. Mais &amp;agrave; l&amp;rsquo;affichage nous aurions des probl&amp;egrave;mes de scintillement (deux types d&amp;rsquo;affichages diff&amp;eacute;rents vectoriel et 3D &amp;agrave; r&amp;eacute;aliser sur une m&amp;ecirc;me zone clip n&amp;rsquo;est pas forcement bon&amp;hellip;). Nous allons donc simplement rajouter une nouvelle fen&amp;ecirc;tre au dessus de la fen&amp;ecirc;tre existante, sans bordure elle aussi&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img height="509" width="617" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/4300.annexe3_2D00_6.png" border="0" style="vertical-align:middle;border:black 2px solid;" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Son contenu sera directement reli&amp;eacute; au contenu du panel Xna (le Canvas). La classe GameHost contiendra d&amp;eacute;sormais un nouveau membre nomm&amp;eacute; _frontWindow de type Window. Elle exposera en internal une propri&amp;eacute;t&amp;eacute; nomm&amp;eacute;e WPFHost donnant acc&amp;egrave;s au Content de cette window&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;internal&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt; &lt;span style="color:blue;"&gt;object&lt;/span&gt; WPFHost&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;get&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;._frontWindow.Content;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;set&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;._frontWindow.Content = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;La classe Game exposera elle-aussi&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;le Content de cette window &amp;agrave; l&amp;rsquo;aide d&amp;rsquo;une propri&amp;eacute;t&amp;eacute; portant le&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;m&amp;ecirc;me nom&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt; &lt;span style="color:blue;"&gt;object&lt;/span&gt; WPFHost&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;get&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (!(System.ComponentModel.&lt;span style="color:#2b91af;"&gt;DesignerProperties&lt;/span&gt;.GetIsInDesignMode(&lt;span style="color:blue;"&gt;this&lt;/span&gt;)))&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Window.WPFHost;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;else&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; (&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Children[0] &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ContentControl&lt;/span&gt;).Content;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;set&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (!(System.ComponentModel.&lt;span style="color:#2b91af;"&gt;DesignerProperties&lt;/span&gt;.GetIsInDesignMode(&lt;span style="color:blue;"&gt;this&lt;/span&gt;)))&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Window.WPFHost = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;else&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Children[0] &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ContentControl&lt;/span&gt;).Content = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;mso-ansi-language:EN-US;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Cette propri&amp;eacute;t&amp;eacute; d&amp;eacute;termine si nous sommes en mode design (sous visual studio) ou en mode runtime. En mode design nous utilisons le fonctionnement classique du Canvas dont h&amp;eacute;rite notre classe Game, en mode runtime nous ciblons directement la window. Cela nous permet en mode design de pouvoir voir l&amp;rsquo;UI de notre contr&amp;ocirc;le et de pouvoir la modifier &amp;agrave; la souris.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;En outre&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;nous marquons la classe Game de l&amp;rsquo;attribut&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;[System.Windows.Markup.&lt;span style="color:#2b91af;"&gt;ContentProperty&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;WPFHost&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Permettant de mettre du contenu direct en Xaml&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img height="652" width="575" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/0005.annexe3_2D00_7.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;La page Window1.xaml a &amp;eacute;t&amp;eacute; modifi&amp;eacute;e pour rajouter du contenu &amp;agrave; plusieurs RotatingCubeGame comme le montre l&amp;rsquo;image ci-dessus. Nous avons ajout&amp;eacute; des shapes et paths purs pour reproduire le personnage orange et jaune symbolisant le Xna, des boutons et label li&amp;eacute;s par des &amp;eacute;v&amp;eacute;nements et un FlowDocument avec scrolling.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;L&amp;rsquo;assembly Arcane.Xna.Presentation pr&amp;eacute;sente un moyen simple d&amp;rsquo;int&amp;eacute;grer de mani&amp;egrave;re professionnel du Xna &amp;agrave; ses applications WPF. Le seul vrai d&amp;eacute;faut qu&amp;rsquo;on peut lui trouver est la cr&amp;eacute;ation de deux fen&amp;ecirc;tre par panel Xna. Il faut savoir que le nombre de fen&amp;ecirc;tre affichable sous Windows est malheureusement limit&amp;eacute;. Le r&amp;eacute;sultat fonctionne tout de m&amp;ecirc;me parfaitement et peut &amp;ecirc;tre utilis&amp;eacute; pour des applications professionnelles&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/2148.annexe3_2D00_8.png"&gt;&lt;img height="480" width="640" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/2148.annexe3_2D00_8.png" border="0" style="border:2px solid black;vertical-align:middle;" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Vous pouvez t&amp;eacute;l&amp;eacute;charger le code &lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/7026.XnaInWpf.zip"&gt;ici&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;A bientôt sur ce Blog !&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;Valentin Billotte&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1703480" width="1" height="1"&gt;</description><enclosure url="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.articles.CoursXna.annexe3/7026.XnaInWpf.zip" length="471276" type="application/x-compressed" /><category domain="http://msmvps.com/blogs/valentin/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Coding/default.aspx">Coding</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Mise à jour des tutoriaux pour la 3.1 (suite)</title><link>http://msmvps.com/blogs/valentin/archive/2009/06/22/mise-224-jour-des-tutoriaux-pour-la-3-1-suite.aspx</link><pubDate>Mon, 22 Jun 2009 12:03:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1696176</guid><dc:creator>valentin</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1696176</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/06/22/mise-224-jour-des-tutoriaux-pour-la-3-1-suite.aspx#comments</comments><description>&lt;p&gt;Les tutoriaux 4 &amp;agrave; 6 on &amp;eacute;t&amp;eacute; r&amp;eacute;&amp;eacute;crits &amp;agrave; la sauce 3.1 eux aussi :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/valentin/archive/2007/03/30/tutoriaux-xna-sommaire-g-n-ral.aspx"&gt;http://msmvps.com/blogs/valentin/archive/2007/03/30/tutoriaux-xna-sommaire-g-n-ral.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Merci de vos commentaires &lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;
&lt;p&gt;Valentin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1696176" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA+Game+Studio/default.aspx">XNA Game Studio</category></item><item><title>Mise à  jours des tutoriaux pour la 3.1</title><link>http://msmvps.com/blogs/valentin/archive/2009/06/17/mise-224-jours-des-tutoriaux-pour-la-3-1.aspx</link><pubDate>Wed, 17 Jun 2009 10:09:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1695693</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1695693</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/06/17/mise-224-jours-des-tutoriaux-pour-la-3-1.aspx#comments</comments><description>&lt;p&gt;Les tutoriaux sont en cours de r&amp;eacute;&amp;eacute;criture pour Xna Game Studio 3.1.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/valentin/archive/2007/03/30/tutoriaux-xna-sommaire-g-n-ral.aspx"&gt;http://msmvps.com/blogs/valentin/archive/2007/03/30/tutoriaux-xna-sommaire-g-n-ral.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les&amp;nbsp;4 premiers sont dors et d&amp;eacute;j&amp;agrave; termin&amp;eacute; et am&amp;eacute;lior&amp;eacute;s pour la plupart.&lt;/p&gt;
&lt;p&gt;Merci de vos commentaires&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1695693" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA+Game+Studio/default.aspx">XNA Game Studio</category></item><item><title>Mettre à jour le Xna Game Studio Connect avec l'arrivée du XGS 3.1</title><link>http://msmvps.com/blogs/valentin/archive/2009/06/16/mettre-224-jour-le-xna-game-studio-connect-avec-l-arriv-233-e-du-xgs-3-1.aspx</link><pubDate>Tue, 16 Jun 2009 07:21:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1695591</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1695591</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/06/16/mettre-224-jour-le-xna-game-studio-connect-avec-l-arriv-233-e-du-xgs-3-1.aspx#comments</comments><description>&lt;h2 class="entry-title"&gt;&lt;a target="_blank" href="http://klucher.com/blog/updating-xna-game-studio-connect-3-1-edition/" class="entry-title-link"&gt;
&lt;div class="entry-title-go-to"&gt;&lt;/div&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class="entry-author"&gt;J&amp;#39;allais faire un post l&amp;agrave; dessus, mais Michael l&amp;#39;a d&amp;eacute;j&amp;agrave; fait en anglais sur son &lt;a target="_blank" href="http://klucher.com/blog/updating-xna-game-studio-connect-3-1-edition/"&gt;Blog&lt;/a&gt;, vais me contenter de le traduire.&lt;/div&gt;
&lt;div class="entry-body"&gt;
&lt;div&gt;
&lt;div class="item-body"&gt;
&lt;p&gt;Donc la proc&amp;eacute;dure &amp;agrave; suivre est la m&amp;ecirc;me que celle r&amp;eacute;alis&amp;eacute;e lors du passage du Xna Game Studio 2.0 &amp;agrave; la 3.0. Chaque mise &amp;agrave; jour du Game Studio&amp;nbsp;demande evidemment une mise &amp;agrave; jour du Xna Game Studio Connect puisque celui-ci repose entre autres sur le Xna Framework et les sp&amp;eacute;cificit&amp;eacute;s du Game Studio. &lt;/p&gt;
&lt;p&gt;La nouvelle version du Xna Game Studio Connect fonctionne avec toutes les versions pr&amp;eacute;c&amp;eacute;dentes de XGS hormi la version Express (la 1.0). Il n&amp;#39;est donc pas n&amp;eacute;cessaire de desinstaller les jeux d&amp;eacute;j&amp;agrave; pr&amp;eacute;sent sur le disque dur de votre console.&lt;/p&gt;
&lt;p&gt;Si vous lancez le XGSC depuis votre console vous recevrez une instruction de mise &amp;agrave; jour avec un &amp;eacute;cran &amp;agrave; peu pr&amp;egrave;s similaire &amp;agrave; celui-ci :&lt;/p&gt;
&lt;p&gt;&lt;img height="249" width="439" src="http://klucher.com/files/media/image/WindowsLiveWriter/UpdatingXNAGameStudioConnect_A794/SplashScreenSmall_3.png" alt="SplashScreenSmall" border="0" title="SplashScreenSmall" style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" /&gt;&amp;nbsp; &lt;br /&gt;Voici les instructions pour effectuer cette mise &amp;agrave; jour :&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;br /&gt;Etape 1: Supprimez l&amp;#39;ancien&amp;nbsp;XNA Game Studio Connect&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Il est n&amp;eacute;cessaire de supprimer l&amp;#39;ancien XNA Game Studio Connect&amp;nbsp;de votre&amp;nbsp;Xbox 360. Vous risquez sinon des probl&amp;egrave;mes de versionning.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dans l&amp;#39;interface utilisateur de votre console naviguez vers&amp;nbsp;Biblioth&amp;egrave;que de &lt;b&gt;Games Library./Biblioth&amp;egrave;que de jeux&lt;/b&gt; et selectionnez &lt;strong&gt;Community Games/Jeux de la communaut&amp;eacute;&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;Selectionnez alors &lt;strong&gt;XNA Game Studio Connect&lt;/strong&gt; &amp;agrave; partir de la liste de jeux. Selectionnez ensuite &lt;b&gt;Delete Game/Supprimer le jeu&lt;/b&gt;.&amp;nbsp;Souvenez vous qu&amp;#39;il n&amp;#39;est pas n&amp;eacute;cessaire de supprimez les jeux qui sont pr&amp;eacute;sents sur votre machine.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Step 2:T&amp;eacute;l&amp;eacute;chargez le nouveau XNA Game Studio Connect&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Pour t&amp;eacute;l&amp;eacute;chargez la nouvelle version du Xna Game Studio Connect suivez les instructions suivantes :&amp;nbsp; &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dans l&amp;#39;interface utilisateur de votre console naviguez vers le &lt;b&gt;Game Marketplace&lt;/b&gt;, et selectionnez &lt;b&gt;All Games/Tous les jeux&lt;/b&gt;. &lt;/li&gt;
&lt;li&gt;Selectionnez alors le &lt;b&gt;XNA Creators Club&lt;/b&gt;, puis selectionnez le &lt;b&gt;XNA Game Studio Connect&lt;/b&gt;. Vous devriez voir l&amp;#39;option pour t&amp;eacute;l&amp;eacute;charger &amp;agrave; nouveau le software. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1695591" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/configuration/default.aspx">configuration</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA+Game+Studio/default.aspx">XNA Game Studio</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Xna+Game+Studio+Connect/default.aspx">Xna Game Studio Connect</category></item><item><title>Xna Game Studio 3.1 télchargeable !!</title><link>http://msmvps.com/blogs/valentin/archive/2009/06/12/xna-game-studio-3-1-t-233-lchargeable.aspx</link><pubDate>Fri, 12 Jun 2009 12:50:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1695105</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1695105</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/06/12/xna-game-studio-3-1-t-233-lchargeable.aspx#comments</comments><description>&lt;p&gt;Une mise &amp;agrave; jour du Xna Framework et des outils associ&amp;eacute;s est maintenant accessible : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support des avatars : Arriv&amp;eacute;s avec la nouvelle XBox Experience, vous pouvez d&amp;eacute;sormais les utiliser et les afficher dans votre jeu, &lt;/li&gt;
&lt;li&gt;Lecture des vid&amp;eacute;os : Lecture pris en charge directement dans le framework (fullscreen, multi play, ...), &lt;/li&gt;
&lt;li&gt;Xbox Live Party : C&amp;rsquo;est la possibilit&amp;eacute; de communiquer (chat) entre joueurs d&amp;rsquo;un m&amp;ecirc;me jeu, y compris si ils ne sont pas dans la m&amp;ecirc;me session multi-joueurs, &lt;/li&gt;
&lt;li&gt;Audio API et XACT3: L&amp;rsquo;utilisation de SoundEffect.Play est d&amp;eacute;sormais diff&amp;eacute;rente, XACT version 3 apporte de nouvelles fonctionnalit&amp;eacute;s (filtres sur chaque track, support de xWMA) &lt;/li&gt;
&lt;li&gt;Content pipeline, il a &amp;eacute;t&amp;eacute; am&amp;eacute;lior&amp;eacute; pour le support de ses propres types et la serialiation automatique. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour ceux qui desirent faire evoluer leurs projets, lisez ceci : &lt;a href="http://creators.xna.com/article/convert30to31"&gt;http://creators.xna.com/article/convert30to31&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Pour ceux qui veulent des infos plus d&amp;eacute;taill&amp;eacute;es; lisez ceci : &lt;a href="http://creators.xna.com/news/xnagamestudio3.1"&gt;http://creators.xna.com/news/xnagamestudio3.1&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;T&amp;eacute;l&amp;eacute;chargeable ici : &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1695105" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA+Game+Studio/default.aspx">XNA Game Studio</category></item><item><title>Liste de tous les blogs MS</title><link>http://msmvps.com/blogs/valentin/archive/2009/04/23/liste-de-tous-les-blogs-ms.aspx</link><pubDate>Thu, 23 Apr 2009 11:30:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1690183</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1690183</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/04/23/liste-de-tous-les-blogs-ms.aspx#comments</comments><description>&lt;p&gt;Un blog MS recense tous les blogs ms class&amp;eacute;s par famille de produit. Je pensais pas que &amp;ccedil;a manquait &amp;agrave; ce point ...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/blogms/pages/directory-of-microsoft-team-blogs.aspx"&gt;http://blogs.technet.com/blogms/pages/directory-of-microsoft-team-blogs.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1690183" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/blog/default.aspx">blog</category></item><item><title>MVP  6éme edition</title><link>http://msmvps.com/blogs/valentin/archive/2009/04/02/mvp-6-233-me-edition.aspx</link><pubDate>Thu, 02 Apr 2009 02:24:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1684045</guid><dc:creator>valentin</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1684045</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/04/02/mvp-6-233-me-edition.aspx#comments</comments><description>&lt;p&gt;Allez hop, je rempile pour une ann&amp;eacute;e de plus en tant que MVP.&lt;/p&gt;
&lt;p&gt;Depuis deux ans j&amp;#39;ai cette distinction sur le Xna.&lt;/p&gt;
&lt;p&gt;Champagne ! :)&lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1684045" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/MVP/default.aspx">MVP</category></item><item><title>Installation Silverlight 3.0 : The hash value is not correct.</title><link>http://msmvps.com/blogs/valentin/archive/2009/03/31/installation-silverlight-3-0-the-hash-value-is-not-correct.aspx</link><pubDate>Tue, 31 Mar 2009 07:42:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1683254</guid><dc:creator>valentin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1683254</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/03/31/installation-silverlight-3-0-the-hash-value-is-not-correct.aspx#comments</comments><description>&lt;p&gt;Juste la honte pour Microsoft puisque c&amp;#39;est un bug connu d&amp;eacute;j&amp;agrave; sous la 2.0 et qui n&amp;#39;est pas corrig&amp;eacute;...&lt;/p&gt;
&lt;p&gt;Si votre connection au r&amp;eacute;seau Internet n&amp;#39;est pas &amp;quot;directe&amp;quot; (genre derri&amp;egrave;re un proxy) vous pouvez vous recevoir en pleine figure un&amp;nbsp;&amp;quot;The hash value is not correct.&amp;quot; lors de l&amp;#39;installation de Silverlight 3.0.&lt;/p&gt;
&lt;p&gt;L&amp;#39;astuce pour contourner cette erreur est relativement simple.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Faites tout d&amp;#39;abord une extraction de l&amp;#39;executable &amp;quot;Silverlight3_Tools.exe&amp;quot; &amp;agrave; l&amp;#39;aide de la commande &amp;quot;Silverlight3_Tools.exe /x&amp;quot;. Genre dans un r&amp;eacute;pertoire situ&amp;eacute; dans &amp;quot;c:\prout&amp;quot;.&lt;/li&gt;
&lt;li&gt;T&amp;eacute;l&amp;eacute;chargez le developper runtime pour la 3.0 ici &lt;a target="_blank" href="http://go.microsoft.com/fwlink/?LinkID=141212"&gt;&lt;span style="color:#ff9900;"&gt;Silverlight.3.0_Developer.exe&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Placez cet executable dans le r&amp;eacute;pertoire c:\prout qui contient d&amp;eacute;j&amp;agrave; le contenu du &amp;quot;Silverlight3_Tools.exe&amp;quot; pr&amp;eacute;c&amp;eacute;demment extrait.&lt;/li&gt;
&lt;li&gt;Lancez SPInstaller.exe situ&amp;eacute; dans le r&amp;eacute;pertoire c:\prout&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;L&amp;#39;installation devrait cette fois ci se terminer normalement.&lt;/p&gt;
&lt;p&gt;EDIT : je viens de voir un site qui donne une r&amp;eacute;ponse &amp;agrave; tout un tas d&amp;#39;erreurs d&amp;#39;installation&amp;nbsp;(il faut dire qu&amp;#39;avec l&amp;#39;&amp;eacute;quipe MS qui s&amp;#39;occupe des setup Silverlight, y&amp;#39;a du business &amp;agrave; se faire ...) :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/amyd/archive/2009/03/19/silverlight-tools-installation-error-codes.aspx"&gt;http://blogs.msdn.com/amyd/archive/2009/03/19/silverlight-tools-installation-error-codes.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1683254" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Error/default.aspx">Error</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Setup/default.aspx">Setup</category></item><item><title>Ombre en Silverlight</title><link>http://msmvps.com/blogs/valentin/archive/2009/03/18/ombre-en-silverlight.aspx</link><pubDate>Wed, 18 Mar 2009 03:13:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1679005</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1679005</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/03/18/ombre-en-silverlight.aspx#comments</comments><description>&lt;p&gt;Aujourd&amp;#39;hui pour faire une ombre sous un contr&amp;ocirc;le en Silverlight il n&amp;#39;y a pas beaucoup de possibilit&amp;eacute;s.&lt;/p&gt;
&lt;p&gt;Le faire en vectoriel s&amp;#39;av&amp;egrave;re difficile et on a l&amp;#39;habitude de passer par une image PNG, ce qui n&amp;#39;est pas forcement le plus optimis&amp;eacute;.&lt;/p&gt;
&lt;p&gt;Voici un simple code qui permet de corriger cela, et en vectoriel.&amp;nbsp; Vivement l&amp;#39;ajout d&amp;#39;effet en Silverlight pour eviter de passer par ce genre de tips...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;UserControl x:Class=&amp;quot;SmartInterface.TravelingPanel&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;xmlns:mc=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;mc:Ignorable=&amp;quot;d&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;d:DesignWidth=&amp;quot;640&amp;quot; d:DesignHeight=&amp;quot;480&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;Width=&amp;quot;340&amp;quot; Height=&amp;quot;340&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;RenderTransformOrigin=&amp;quot;0.5,0.5&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Grid.ColumnDefinitions&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;ColumnDefinition Width=&amp;quot;*&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Grid.ColumnDefinitions&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;!-- Six lignes qui cr&amp;sbquo;&amp;sbquo;ent un effet d&amp;#39;ombrage--&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:courier new,courier;"&gt;&amp;lt;Border CornerRadius=&amp;quot;16&amp;quot; Margin=&amp;quot;-6&amp;quot; BorderThickness=&amp;quot;1&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; Opacity=&amp;quot;0.10&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:courier new,courier;"&gt;&amp;lt;Border CornerRadius=&amp;quot;15&amp;quot; Margin=&amp;quot;-5&amp;quot; BorderThickness=&amp;quot;1&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; Opacity=&amp;quot;0.20&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:courier new,courier;"&gt;&amp;lt;Border CornerRadius=&amp;quot;14&amp;quot; Margin=&amp;quot;-4&amp;quot; BorderThickness=&amp;quot;1&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; Opacity=&amp;quot;0.30&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:courier new,courier;"&gt;&amp;lt;Border CornerRadius=&amp;quot;13&amp;quot; Margin=&amp;quot;-3&amp;quot; BorderThickness=&amp;quot;1&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; Opacity=&amp;quot;0.40&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:courier new,courier;"&gt;&amp;lt;Border CornerRadius=&amp;quot;12&amp;quot; Margin=&amp;quot;-2&amp;quot; BorderThickness=&amp;quot;1&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; Opacity=&amp;quot;0.50&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:courier new,courier;"&gt;&amp;lt;Border CornerRadius=&amp;quot;11&amp;quot; Margin=&amp;quot;-1&amp;quot; BorderThickness=&amp;quot;1&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; Opacity=&amp;quot;0.60&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Border Name=&amp;quot;ExternalBorder&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;CornerRadius=&amp;quot;10,10,10,10&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;Background=&amp;quot;#FF92B825&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;BorderBrush=&amp;quot;#FF6D8A17&amp;quot; BorderThickness=&amp;quot;1&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;RenderTransformOrigin=&amp;quot;0.5,0.5&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Border Name=&amp;quot;InternalBorder&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;CornerRadius=&amp;quot;10,10,10,10&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;Background=&amp;quot;#FF92B825&amp;quot; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;BorderBrush=&amp;quot;#FFB7D265&amp;quot; BorderThickness=&amp;quot;1&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Canvas Clip=&amp;quot;M0,8 C0,3.581722 3.581722,0 8,0 L328,0 C332.41827,0 336,3.581722 336,8 L336,328 C336,332.41827 332.41827,336 328,336 L8,336 C3.581722,336 0,332.41827 0,328 z&amp;quot; &amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Rectangle Width=&amp;quot;336&amp;quot; Height=&amp;quot;336&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Rectangle.Fill&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;RadialGradientBrush GradientOrigin=&amp;quot;0.197,0.58&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;RadialGradientBrush.RelativeTransform&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;TransformGroup&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;ScaleTransform CenterX=&amp;quot;0.5&amp;quot; CenterY=&amp;quot;0.5&amp;quot; ScaleY=&amp;quot;1.27&amp;quot; ScaleX=&amp;quot;1.874&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;SkewTransform CenterX=&amp;quot;0.5&amp;quot; CenterY=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;RotateTransform CenterX=&amp;quot;0.5&amp;quot; CenterY=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;TranslateTransform Y=&amp;quot;0.234&amp;quot; X=&amp;quot;0.191&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/TransformGroup&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/RadialGradientBrush.RelativeTransform&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;GradientStop Color=&amp;quot;#FF6D8A17&amp;quot; Offset=&amp;quot;0.759&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;GradientStop Color=&amp;quot;#FF92B825&amp;quot; Offset=&amp;quot;1&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/RadialGradientBrush&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Rectangle.Fill&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Rectangle&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Rectangle Width=&amp;quot;336&amp;quot; Height=&amp;quot;336&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;Rectangle.Fill&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;LinearGradientBrush EndPoint=&amp;quot;0.5,1&amp;quot; StartPoint=&amp;quot;0.5,0&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;GradientStop Color=&amp;quot;#B2000000&amp;quot; Offset=&amp;quot;0.978&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;GradientStop Color=&amp;quot;#00FFFFFF&amp;quot; Offset=&amp;quot;0.527&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/LinearGradientBrush&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Rectangle.Fill&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Rectangle&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Canvas&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Border&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Border&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/Grid&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#333333;font-family:courier new,courier;"&gt;&amp;lt;/UserControl&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Les deux Border d&amp;#39;affil&amp;eacute;s provoquent cet effet d&amp;#39;ombrage r&amp;eacute;alis&amp;eacute; relativement facilement et sutout tr&amp;egrave;s rapide &amp;agrave; afficher pour le moteur graphique de votre plugin pr&amp;eacute;f&amp;eacute;r&amp;eacute;. Le resultat est le suivant :&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;img width="383" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.Tips.Silverlight/shadowsl.png" height="375" style="vertical-align:middle;border:2px solid black;" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:small;color:#000000;"&gt;J&amp;#39;utilise un Border dans la mesure o&amp;ugrave; le contr&amp;ocirc;le sur lequel j&amp;#39;applique un ombrage poss&amp;egrave;de des cot&amp;eacute;s arrondis. Sur les contr&amp;ocirc;les carr&amp;eacute;s ou rectangulaires, l&amp;#39;utilisation du shape Line sera un meilleur choix. Enfin, il suffit de jouer sur la taille de la bordure (Thickness) pour affiner l&amp;#39;ombrage ainsi que le nombre de couche pour am&amp;eacute;liorer le rendu (ici de 0,60d &amp;agrave; 0,10d).&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1679005" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Optimization de code pour du Xna rapide et efficace !</title><link>http://msmvps.com/blogs/valentin/archive/2009/02/28/optimization-de-code-pour-du-xna-rapide-et-efficace.aspx</link><pubDate>Sat, 28 Feb 2009 13:53:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1674838</guid><dc:creator>valentin</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1674838</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/02/28/optimization-de-code-pour-du-xna-rapide-et-efficace.aspx#comments</comments><description>&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Je dois en omettre un grand nombre, si vous en avez d&amp;#39;autres n&amp;#39;hesitez pas &amp;agrave; me les soumettre que je les rajoute ici !&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;Premi&amp;egrave;re optimisation, les strings&amp;nbsp;:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Eviter tout indexeur &amp;agrave; base de string s&amp;rsquo;il y&amp;rsquo;a un &amp;eacute;quivalent &amp;agrave; base d&amp;rsquo;int. &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;L&amp;#39;instruction :&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:courier new,courier;"&gt;myEffect.Techniques[&amp;quot;Precompiled&amp;quot;] ;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Est bien moins efficace q&amp;#39;un :&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:courier new,courier;"&gt;const int TechnikIndex = 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:courier new,courier;"&gt;myEffect.Technique[TechnikIndex]&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Eviter au maximum la class string, si on a besoin de puissance. En C# tout modification d&amp;#39;une string entraine la cr&amp;eacute;ation d&amp;#39;une nouvelle instance et donc une allocation m&amp;eacute;moire. Une string N EST JAMAIS MODIFIABLE et l&amp;#39;allocation m&amp;eacute;moire est une op&amp;eacute;ration tr&amp;egrave;s couteuse en temps. Il faut donc travailler un maximum avec StringBuilder.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;Besoin de comprendre le string intern pool. Quand on cr&amp;eacute;&amp;eacute; une string, le clr regarde dans un pool interne si elle existe avant de la cr&amp;eacute;er.&amp;nbsp;(m&amp;eacute;thode statique Intern de la classe string).&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Donc string jamais collect&amp;eacute;s comme les objets communs dans le GC.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;&amp;nbsp;Boxing/unboxing&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Boxing passage d&amp;#39;un value type (exemple int) &amp;agrave; une classe objet .&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Par exemple : &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:courier new,courier;"&gt;int a&amp;nbsp; = 0;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:courier new,courier;"&gt;object o = (object)a;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Unboxing est l&amp;#39;op&amp;eacute;ration inverse.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;boxed = 20 fois plus de traitement CPU qu&amp;#39;une simple affectation de ref&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;unboxed = 4 fois plus&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;= g&amp;eacute;n&amp;eacute;ric autant que faire se peux (optimization en Early binding)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;Pour les struct, implementer la m&amp;eacute;thode ToString (sinon il y&amp;rsquo;a boxing en objet pour chaque appel &amp;agrave; cette m&amp;eacute;thode)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;Array&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Jagged Arrays &amp;gt; Rectangular Array ([][] &amp;gt; [,])&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Privilegier les for au foreach (moins n&amp;eacute;cessaire depuis le .Net 3.0)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;addrange plutot que add&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Range Check important, exemple :&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;/&lt;/span&gt;&lt;span style="font-family:courier new,courier;"&gt;/rapide&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;for(int i = 0; i &amp;lt; myArray.Length; i++) &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp; Console.WriteLine(myArray.ToString());&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;//plus lent&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;for(int i = 0; i &amp;lt; myArray.Length + y; i++) &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;{&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp; Console.WriteLine(myArray[i+x].ToString());&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:courier new,courier;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Dans la seconde boucle le test ne porte pas sur la longueur du tableau trait&amp;eacute; mais sur une autre valeur, il y&amp;rsquo;a donc des tests suppl&amp;eacute;mentaire ajout&amp;eacute; en IL pour g&amp;eacute;n&amp;eacute;rer une exception en cas de sortir de Bounds.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;Methodes :&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Il y&amp;rsquo;a quelque regles simples pour que le compilateur utilise de l&amp;rsquo;inlined&amp;nbsp;(suppresion &amp;agrave; la compilation d&amp;#39;une m&amp;eacute;thode pour inclure son code en lieu et place de l&amp;#39;instruction appellant la dite m&amp;eacute;thode) :&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;32o d&amp;#39;il (8instructions) max par m&amp;eacute;thode/accesseur/mutateur &amp;agrave; &amp;quot;inliner&amp;quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;pas de structures conditionnelles dans le bloc &amp;agrave; inliner&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;pas de type struct utilis&amp;eacute; dans le bloc &amp;agrave; inliner&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;pas de bloc Try/Catch/Finaly dans le bloc &amp;agrave; inliner.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Si il n&amp;rsquo;y a pas besoin de rendre le code compr&amp;eacute;hensible on priviligiera les chunky call au maximum (m&amp;eacute;thodes &amp;eacute;normes en lieu et place de myriades de petites m&amp;eacute;thodes qui s&amp;rsquo;appellent les unes les autres).&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;Thread&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Synchroniser les thread : System.Threading.Interlocked class&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;Exception&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;retourner des enum plutot que des exception sur les m&amp;eacute;thodes critiques&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Eviter ce genre de code&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;public static void Main(string[] args){&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp; int j = 0;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp; for(int i = 0; i &amp;lt; 10000; i++){&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j = i;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new System.Exception();&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch {}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;En asp.net, &amp;agrave; eviter :&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;L&amp;rsquo;instruction : Response.Redirect() elle provoque un ThreadAbortException&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Un throw d&amp;#39;exception perturbe gravement l&amp;#39;activit&amp;eacute; CPU associ&amp;eacute;e &amp;agrave; votre applicatif.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;Objets&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Utiliser au maximum les structure l&amp;agrave; ou la notion de r&amp;eacute;f&amp;eacute;rence n&amp;rsquo;est pas importante (besoin ponctuelle d&amp;rsquo;agr&amp;eacute;gat ordonn&amp;eacute; de donn&amp;eacute;es) en lieu et place d&amp;rsquo;une class&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;(Exemple de la structure Point, Rectangle, etc.)&amp;nbsp;. La gestion en m&amp;eacute;moire est alors bien plus efficace et rapide.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Apprecier au maximum l&amp;rsquo;attribut Fieldoffset qui permet de r&amp;eacute;aliser l&amp;rsquo;&amp;eacute;quivalent de l&amp;rsquo;Union du langage C pour optimiser la m&amp;eacute;moire&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Utiliser les weakreference notamment pour le cache, afin de ne pas surcharger la m&amp;eacute;moire.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;strong&gt;Framework&amp;nbsp;:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Working Set : charger une assembly pour profiter d&amp;#39;une seule de ses m&amp;eacute;thodes c&amp;#39;est pas bien !&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Utiliser vadump.exe pour d&amp;eacute;tecter ca dans son framework&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Se servir de Perfmon et de ses attributs (nb de classes charg&amp;eacute;es, nombre de m&amp;eacute;thodes, temps pass&amp;eacute; &amp;agrave; loader, JITed, etc.)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;&amp;nbsp;Executables&amp;nbsp;:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Pr&amp;eacute;compilation avec ngen.exe pour les exes critiques. Permet de pr&amp;eacute;compiler son application pour un premier lancement rapide.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&lt;strong&gt;SQL&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;connexion ouverte longtemps &amp;lt; multiple ouverture /fermeture de connexion&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Datareader &amp;gt; dataset&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Annuler le transaction enlistment si inutile&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;nbsp;SqlConnection conn = new SqlConnection(&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&amp;quot;Server=exasrv01;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Integrated Security=true;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:auto 0cm;" class="xmsonormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;Enlist=false&amp;quot;);&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1674838" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Coding/default.aspx">Coding</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Optimization/default.aspx">Optimization</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Bonnes+Pratiques/default.aspx">Bonnes Pratiques</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Article marrant et interessant</title><link>http://msmvps.com/blogs/valentin/archive/2009/02/15/article-marrant-et-interessant.aspx</link><pubDate>Sun, 15 Feb 2009 13:47:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1672521</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1672521</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/02/15/article-marrant-et-interessant.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://bonnenouvelle.blog.lemonde.fr/2009/02/14/super-mario-contre-francis-cabrel/"&gt;http://bonnenouvelle.blog.lemonde.fr/2009/02/14/super-mario-contre-francis-cabrel/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quoi dire ?&lt;/p&gt;
&lt;p&gt;C&amp;#39;&amp;eacute;tait mieux avant...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1672521" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/News/default.aspx">News</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Jeux+Vid_26002300_233_3B00_os/default.aspx">Jeux Vid&amp;#233;os</category></item><item><title>Une petite vidéo ...</title><link>http://msmvps.com/blogs/valentin/archive/2009/01/23/une-petite-vid-233-o.aspx</link><pubDate>Fri, 23 Jan 2009 15:02:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1665065</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1665065</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/01/23/une-petite-vid-233-o.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Vid&amp;eacute;o de l&amp;#39;editeur :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://fr.youtube.com/watch?v=6PBoEaY8u7E"&gt;http://fr.youtube.com/watch?v=6PBoEaY8u7E&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1665065" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Editor/default.aspx">Editor</category></item><item><title>Promouvoir Xna : y'a du boulot, vivement les techdays !</title><link>http://msmvps.com/blogs/valentin/archive/2009/01/20/promouvoir-xna-y-a-du-boulot-vivement-les-techdays.aspx</link><pubDate>Tue, 20 Jan 2009 21:47:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1664269</guid><dc:creator>valentin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1664269</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/01/20/promouvoir-xna-y-a-du-boulot-vivement-les-techdays.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Les TechDays approchant, j&amp;rsquo;aimerais vous montrer comment on se pr&amp;eacute;pare chez Exakis&amp;hellip;&amp;nbsp; et vous donner envie de participer &amp;agrave; la session XNA&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;Pour la vid&amp;eacute;o visionnez l&amp;agrave; ici :&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://fr.youtube.com/watch?v=cF4N9hWgT60"&gt;&lt;img width="635" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.Techdays/video.png" height="379" style="vertical-align:middle;border:2px solid black;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://fr.youtube.com/watch?v=cF4N9hWgT60"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dl.free.fr/mon.pl?i=2508126&amp;amp;h=moyVwGYy"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Comme quoi il y&amp;#39;a du travail encore pour promouvoir Xna ... :)&lt;/p&gt;
&lt;p&gt;Et pour paraphraser &lt;a target="_blank" href="http://blogs.codes-sources.com/lgmorand/archive/2009/01/21/la-bocoditude-tu-connais.aspx"&gt;Mister Codetta&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&amp;quot;faut viender aux TechDays. pour avoir plein d&amp;rsquo;infos, c&amp;rsquo;est par &lt;a href="http://www.comscamp.com/Tracker/Redirect.ashx?linkid=e728a374-2235-4ef4-864b-28fe3a826dde"&gt;l&amp;agrave;&lt;/a&gt;, par &lt;a href="http://www.comscamp.com/Tracker/Redirect.ashx?linkid=e728a374-2235-4ef4-864b-28fe3a826dde"&gt;l&amp;agrave;&lt;/a&gt; ou alors par &lt;a href="http://www.comscamp.com/Tracker/Redirect.ashx?linkid=e728a374-2235-4ef4-864b-28fe3a826dde"&gt;ici&lt;/a&gt;.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.comscamp.com/Tracker/Redirect.ashx?linkid=e728a374-2235-4ef4-864b-28fe3a826dde"&gt;&lt;img border="0" width="467" src="http://blogs.developpeur.org/blogs/lgmorand/MSTD09_bann_728x90.gif_0FEC6887.jpg" alt="MSTD09_bann_728x90.gif" height="62" style="display:inline;border-width:0px;" title="MSTD09_bann_728x90.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1664269" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/TechDays/default.aspx">TechDays</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Humour/default.aspx">Humour</category></item><item><title>World Of Warcraft : Le projet Arcane 2</title><link>http://msmvps.com/blogs/valentin/archive/2009/01/20/world-of-warcraft-le-projet-arcane-2.aspx</link><pubDate>Tue, 20 Jan 2009 16:22:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1663691</guid><dc:creator>valentin</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1663691</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2009/01/20/world-of-warcraft-le-projet-arcane-2.aspx#comments</comments><description>&lt;p&gt;Le projet avance.&lt;/p&gt;
&lt;p&gt;Deux semaines de retard &amp;agrave; cause d&amp;#39;un vol par effraction qui m&amp;#39;a fait tout perdre.&lt;/p&gt;
&lt;p&gt;Le texturing est pratiquement termin&amp;eacute; :&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.Arcane.Esquisse/texturing.png"&gt;&lt;img width="586" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin.Arcane.Esquisse/texturingsmall.png" height="374" style="vertical-align:middle;border:2px solid black;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Jusqu&amp;#39;&amp;agrave; 16 textures applicables sur une portion de terrain avec un haut degr&amp;eacute; de precision.&lt;/p&gt;
&lt;p&gt;Prochaine etape le placement de mod&amp;egrave;les 3D.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A bientôt sur ce Blog !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1663691" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Arcane/default.aspx">Arcane</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/World+Of+Warcraft/default.aspx">World Of Warcraft</category></item></channel></rss>