<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Steven Hanquez &#187; Silverlight</title>
	<atom:link href="https://blog.developpez.com/steven.hanquez/pcategory/xaml/silverlight/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/steven.hanquez</link>
	<description></description>
	<lastBuildDate>Thu, 13 Sep 2012 17:37:53 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Silverlight 5 RC : L’Impression vectorielle en détails</title>
		<link>https://blog.developpez.com/steven.hanquez/p10251/xaml/silverlight/silverlight_5_rc_l_impression_vectoriell</link>
		<comments>https://blog.developpez.com/steven.hanquez/p10251/xaml/silverlight/silverlight_5_rc_l_impression_vectoriell#comments</comments>
		<pubDate>Sun, 04 Sep 2011 19:12:44 +0000</pubDate>
		<dc:creator><![CDATA[Hathortos]]></dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Maintenant que la version RC de Silverlight 5 est disponible au téléchargement, il est temps de se pencher sur les principales nouveautés proposées. Nous commençons notre tour d’horizon aujourd’hui avec l’impression vectorielle. Cette fonctionnalité, très utile dans le cadre d’une application d’entreprise par exemple, a été longtemps réclamée par les développeurs. Pour l’histoire, signalons que Silverlight 4 introduisait déjà une fonctionnalité d’impression au format bitmap. Même si il était appréciable de pouvoir enfin imprimer facilement, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Maintenant que la version RC de <strong>Silverlight 5</strong> est disponible au téléchargement, il est temps de se pencher sur les principales nouveautés proposées. Nous commençons notre tour d’horizon aujourd’hui avec l’impression vectorielle. Cette fonctionnalité, très utile dans le cadre d’une application d’entreprise par exemple, a été longtemps réclamée par les développeurs.</p>
<p>Pour l’histoire, signalons que Silverlight 4 introduisait déjà une fonctionnalité d’impression au format bitmap. Même si il était appréciable de pouvoir enfin imprimer facilement, il faut avouer que ce n’était pas encore la panacée. En effet, l’impression bitmap posait de nombreux problèmes, surtout lorsqu’on souhaitait imprimer plusieurs pages. En effet, Silverlight 4 envoyait à l’imprimante un fichier bitmap particulièrement lourd. En résumé, l’impression bitmap était plus une ébauche qu’une véritable solution utilisable en entreprise.</p>
<p>Heureusement, Silverlight 5 arrive !<span id="more-2"></span></p>
<p>Avec cette nouvelle version, nous disposons enfin d’une impression vectorielle bien plus puissante, rapide et légère. Voyons ensemble comment utiliser cette fonctionnalité.</p>
<p><strong>PrintDocument</strong><br />
Si vous avez déjà utilisé l’impression bitmap sous Silverlight 4, vous serez en terrain connu. En effet, on utilise toujours la classe PrintDocument qui se trouve dans l’espace de nom System.Windows.Printing.</p>
<p>Si on regarde un peu ce que propose cette classe PrintDocument, on y trouve 3 évènements :</p>
<ul>
<li>BeginPrint qui est déclenché juste avant le lancement de l’impression.</li>
<li>PrintPage qui est déclenché au moment de l’impression de chaque page et qui permet de définir ce qui doit être imprimé.</li>
<li>EndPrint qui est déclenché à la fin de l’impression.</li>
</ul>
<p>Généralement, BeginPrint est utilisé pour paramétrer l’impression.<br />
Pour réaliser notre première tentative d’impression, nous allons donc nous abonner sur l’évènement PrintPage et définir ce que l’on souhaite imprimer :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var doc = new PrintDocument(); <br />
doc.PrintPage += (s, args) =&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Quand une page est imprimÃ©e <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;args.PageVisual = printPanel; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;args.HasMorePages = false; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };</div></div>
<p>Nous utilisons pour cela la propriété PageVisual  sur laquelle nous devons placer un UIElement. En l’occurrence, nous lui plaçons un StackPanel défini dans notre UI. Nous précisons ensuite qu’il n’y aura pas plus de pages grâce à la propriété HasMorePages. Dans le cas ou HasMorePages est à true, la page est imprimée et PrintPage est à nouveau appelé pour imprimer la seconde page.</p>
<p>Pour finir notre premier exemple, il suffit de lancer l’impression avec la méthode Print qui attend en paramètre le nom du document au format string.</p>
<p><code class="codecolorer text default"><span class="text">doc.Print(&quot;Mon premier document&quot;);</span></code></p>
<p>L’appel de la méthode Print démarre le processus d’impression et provoque l’affichage d’une fenêtre permettant à l’utilisateur de sélectionner son imprimante.</p>
<p><img src="http://blog.developpez.com/media/Print01.png" width="485" height="470" alt="Choix de l'imprimante" /></p>
<p>C’est lorsque l’utilisateur a choisi son imprimante que l’événement BeginPrint est déclenché.</p>
<p>Si vous avez reproduit ce code, vous avez peut être remarqué que la méthode Print avait une surcharge prenant 3 paramètres. En plus du nom du document, il est en effet possible de préciser certaines préférences d’impression.</p>
<p>On doit pour cela utiliser la nouvelle classe PrinterFallBackSetting :</p>
<p><code class="codecolorer text default"><span class="text">var settings = new PrinterFallbackSettings();</span></code></p>
<p>Notre objet settings ne possède que 2 propriétés :</p>
<ul>
<li>ForceVector qui attend un booléen et qui permet de forcer l’impression en mode vectoriel.</li>
<li>OpacityThreshold qui attend un double et qui permet de spécifier l&rsquo;opacité minimale à prendre en compte</li>
</ul>
<p>Bien sûr, vous vous demandez surement pourquoi est-il possible de forcer l’impression en mode vectoriel. En fait, l’impression par défaut que nous avons vu précédemment peut parfois basculer en mode bitmap. Cela arrive quand des éléments à imprimer ont des caractéristiques que PostScript ne comprend pas. Par exemple, si un élément a une opacité différente de 1 (valeur par défaut), l’impression se fera en Bitmap.</p>
<p>Modifions le code précédent en ajoutant un élément visuel avec une opacité à 0.5 (un rectangle bleu dans notre exemple). A l’exécution, vous ne remarquerez aucune différence mais en réalité, l&rsquo;impression s&rsquo;est faite automatiquement en mode bitmap. </p>
<p><img src="http://blog.developpez.com/media/bitmapsub_01.png" width="791" height="525" alt="Impression Bitmap" /></p>
<p>En forçant l’utilisation du mode vectoriel, Silverlight imprimera dans ce mode, même si des éléments incompatibles avec PostScript existent. Signalons que cela ne fonctionne que si votre imprimante prend en charge l’impression PostScript. Dans le cas contraire, l’impression se fera dans tous les cas en mode Bitmap (même si vous passez la propriété ForceVector à true).</p>
<p>Terminons notre deuxième exemple :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">doc.Print( <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Mon deuxième document&quot;, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; settings, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; false);</div></div>
<p>Cette fois, notre impression s’est bien fais en vectorielle. Cependant, on constate que l’élément dont l’opacité était à 0.5 apparait totalement opaque sur notre impression. </p>
<p><img src="http://blog.developpez.com/media/forced.png" width="479" height="303" alt="Impression Vectorielle" /></p>
<p>Comme nous l’avons vu, PostScript ne prend pas en charge cette fonctionnalité. En complément de la propriété ForceVector, notre objet settings propose donc une seconde propriété appelée OpacityThreshold. Elle permet d’indiquer l’opacité à partir de laquelle les éléments à imprimer doivent être pris en compte. Par défaut, la valeur d’OpacityThreshold est 0. Si on indique 0.4, notre rectangle bleu apparaitra toujours avec une opacité de 1. Si par contre on indique 0.5 ou plus, notre rectangle bleu ne sera plus imprimé.</p>
<p><img src="http://blog.developpez.com/media/forcedwithopacity.png" width="473" height="191" alt="Impression avec OpacityThreshold" /></p>
<p>Enfin, signalons que la méthode Print accepte un 3ème paramètre, de type booléen, qui permet de préciser si l’imprimante par défaut doit être utilisée. Dans ce cas, la fenêtre permettant de choisir son imprimante ne sera pas affichée. Cette fonctionnalité ne fonctionne que pour les applications « trusted ».</p>
<p>Voici un petit résumé du comportement de l’impression :</p>
<ul>
<li>Imprimante ne prenant pas en charge l’impression PostScript :
<ul>
<li>Impression Bitmap dans tous les cas (même si ForceVector est à true).</li>
</ul>
</li>
<li>Imprimante prenant en charge l’impression PostScript :
<ul>
<li>Si des éléments sont incompatibles avec PostScript :
<ul>
<li>Print : Impression en bitmap optimisé.</li>
<li>Print avec forçage : Impression en vectoriel.</li>
</ul>
</li>
<li>Tous les éléments à imprimer sont compatibles avec PostScript :
<ul>
<li>Dans tous les cas, l’impression se fait en vectorielle.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>Impression Bitmap</strong><br />
Vous avez toujours la possibilité d’imprimer par défaut en mode Bitmap en utilisant la méthode PrintBitmap au lieu de Print. Dans ce cas, Silverlight n’aura pas à se poser de question et imprimera directement en Bitmap.  Signalons qu’en utilisant cette méthode, les fichiers envoyés à l’imprimante sont particulièrement lourds (plus de 100 Mo). A titre de comparaison, les données envoyées dans le cas d’une impression vectorielle pèsent moins de 3 ko dans notre exemple.</p>
<p>Dans le prochain billet, nous verrons comment utiliser le contrôle <strong>PivotViewer</strong> qui vient d&rsquo;être intégré à Silverlight.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight 5 RC : Télécharger la documentation</title>
		<link>https://blog.developpez.com/steven.hanquez/p10250/xaml/silverlight/silverlight_5_rc_telecharger_la_document</link>
		<comments>https://blog.developpez.com/steven.hanquez/p10250/xaml/silverlight/silverlight_5_rc_telecharger_la_document#comments</comments>
		<pubDate>Sun, 04 Sep 2011 15:37:42 +0000</pubDate>
		<dc:creator><![CDATA[Hathortos]]></dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Silverlight 5 RC est disponible depuis maintenant trois jours. En attendant les prochains billets qui expliqueront les principales nouveautés de manières détaillées, je vous propose de télécharger la nouvelle documentation (au format chm) mise en ligne par Microsoft. Pour télécharger le précieux fichier de 83 Mo, rendez-vous à cette adresse !]]></description>
				<content:encoded><![CDATA[<p><strong>Silverlight 5 RC</strong> est disponible depuis maintenant trois jours. En attendant les prochains billets qui expliqueront les principales nouveautés de manières détaillées, je vous propose de télécharger la nouvelle documentation (au format chm) mise en ligne par Microsoft. </p>
<p>Pour télécharger le précieux fichier de 83 Mo, rendez-vous à <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=19131">cette adresse</a> !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight 5 disponible en RC !</title>
		<link>https://blog.developpez.com/steven.hanquez/p10242/xaml/silverlight/silverlight_5_disponible_en_rc</link>
		<comments>https://blog.developpez.com/steven.hanquez/p10242/xaml/silverlight/silverlight_5_disponible_en_rc#comments</comments>
		<pubDate>Thu, 01 Sep 2011 20:59:06 +0000</pubDate>
		<dc:creator><![CDATA[Hathortos]]></dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La version RC (Release Candidate) de Silverlight 5 est enfin disponible en téléchargement pour les développeurs. Rappelons qu&#8217;une version Beta avait déjà été publiée par Microsoft il y a quelques mois. Au programme de cette nouvelle version, on trouve pas mal de nouveautés très attendues telles que l&#8217;impression vectorielle, l&#8217;intégration du contrôle PivotViewer, le support du 64 bits ou encore la possibilité de faire des applications &#171;&#160;Trusted&#160;&#187; dans le navigateur. Pour plus d&#8217;informations sur ces [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La version RC (<em>Release Candidate</em>) de <strong>Silverlight 5</strong> est enfin disponible en téléchargement pour les développeurs. Rappelons qu&rsquo;une version Beta avait déjà été publiée par Microsoft il y a quelques mois.</p>
<p>Au programme de cette nouvelle version, on trouve pas mal de nouveautés très attendues telles que l&rsquo;impression vectorielle, l&rsquo;intégration du contrôle PivotViewer, le support du 64 bits ou encore la possibilité de faire des applications &laquo;&nbsp;Trusted&nbsp;&raquo; dans le navigateur.</p>
<p>Pour plus d&rsquo;informations sur ces nouveautés et pour télécharger la RC de Silverlight 5, rendez-vous à <a href="http://www.silverlight.net/learn/overview/what's-new-in-silverlight-5">cette adresse</a>.</p>
<p><em>Ps : Il s&rsquo;agit d&rsquo;une version destinée uniquement aux développeurs pour réaliser des tests. Elle n&rsquo;est pas destinée à être utilisée en production et ne dispose pas de la licence go-live.</em></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
