<?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>ZeServeur &#187; image</title>
	<atom:link href="http://zeserveur.fr/blog/tag/image/feed" rel="self" type="application/rss+xml" />
	<link>http://zeserveur.fr/blog</link>
	<description>La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information…</description>
	<lastBuildDate>Sat, 06 Mar 2010 11:46:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[SWT] Dessiner des images transparentes</title>
		<link>http://zeserveur.fr/blog/2009/05/17/swt-dessiner-des-images-transparentes</link>
		<comments>http://zeserveur.fr/blog/2009/05/17/swt-dessiner-des-images-transparentes#comments</comments>
		<pubDate>Sun, 17 May 2009 12:41:05 +0000</pubDate>
		<dc:creator>zetom</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[layer]]></category>
		<category><![CDATA[swt]]></category>
		<category><![CDATA[transparent]]></category>

		<guid isPermaLink="false">http://zeserveur.fr/blog/?p=91</guid>
		<description><![CDATA[Petit problème: De manière à améliorer les perfs d&#8217;un rendu cartographique, j&#8217;ai besoin de créer des layers&#8230; En Swing, pas de problème: on a les JLayeredPane&#8230; mais en SWT, que neni!
Alors voici une petite astuce pour créer des images transparentes (les fonds de carte n&#8217;ont généralement besoin que d&#8217;être calculés qu&#8217;une seule fois!)




// Définition de [...]]]></description>
			<content:encoded><![CDATA[<p>Petit problème: De manière à améliorer les perfs d&#8217;un rendu cartographique, j&#8217;ai besoin de créer des layers&#8230; En Swing, pas de problème: on a les JLayeredPane&#8230; mais en SWT, que neni!</p>
<p>Alors voici une petite astuce pour créer des images transparentes (les fonds de carte n&#8217;ont généralement besoin que d&#8217;être calculés qu&#8217;une seule fois!)</p>
<p><span id="more-91"></span></p>
<div class="geshi no java">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Définition de LA couleur qui sera considérée comme transparent</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">Color</span> lTransparentColor = Display.<span class="me1">getDisplay</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getSystemColor</span><span class="br0">&#40;</span>SWT.<span class="me1">COLOR_WHITE</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// On crée une palette avec la couleur transparente et toutes les autres </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// couleurs nécessaire à l&#39;image (ici, lOtherColor)</span></div>
</li>
<li class="li1">
<div class="de1">PaletteData lPalette = <span class="kw2">new</span> PaletteData<span class="br0">&#40;</span><span class="kw2">new</span> RGB<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; lTransparentColor.<span class="me1">getRGB</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; lOtherColor.<span class="me1">getRGB</span><span class="br0">&#40;</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Création de l&#39;image avec la palette</span></div>
</li>
<li class="li1">
<div class="de1">ImageData lImageData = <span class="kw2">new</span> ImageData<span class="br0">&#40;</span>lWidth, lHeight, <span class="nu0">2</span>, lPalette<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Définition de la couleur transparente de l&#39;image (blanc ici)</span></div>
</li>
<li class="li1">
<div class="de1">lImageData.<span class="me1">transparentPixel</span> = lPalette.<span class="me1">getPixel</span><span class="br0">&#40;</span>lTransparentColor.<span class="me1">getRGB</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Et voilà!</span></div>
</li>
<li class="li1">
<div class="de1">lImage = <span class="kw2">new</span> <span class="kw3">Image</span><span class="br0">&#40;</span>lDisplay, lImageData<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">Rectangle</span> lImageBounds = lImage.<span class="me1">getBounds</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Le GC qui permet de dessiner dans l&#39;image</span></div>
</li>
<li class="li1">
<div class="de1">GC lGc = <span class="kw2">new</span> GC<span class="br0">&#40;</span>lImage<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Première étape: remplir totalement l&#39;image d&#39;un fond transparent</span></div>
</li>
<li class="li1">
<div class="de1">lGc.<span class="me1">setBackground</span><span class="br0">&#40;</span>lTransparentColor<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">lGc.<span class="me1">fillRectangle</span><span class="br0">&#40;</span>lImageBounds<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Et maintenant, reste plus qu&#39;à dessiner comme avant dans le GC!</span></div>
</li>
</ol>
</div>
<p>C&#8217;est un premier pas vers le dessin en layers&#8230; J&#8217;y reviendrai un peu plus tard avec une petite lib&#8230;<strong>Articles Similaires</strong>
<ul class="similar-posts">
<li><a href="http://zeserveur.fr/blog/2009/09/08/eclipse-et-le-buddy-classloading" rel="bookmark" title="08/09/2009">Eclipse et le &laquo;&nbsp;Buddy Class Loading&nbsp;&raquo;&#8230;</a></li>
<li><a href="http://zeserveur.fr/blog/2009/05/02/rcp-workspace" rel="bookmark" title="02/05/2009">RCP Workspace</a></li>
<li><a href="http://zeserveur.fr/blog/2009/02/12/eclipse-34-le-delta-pack" rel="bookmark" title="12/02/2009">Eclipse 3.4 &#038; le delta pack</a></li>
<li><a href="http://zeserveur.fr/blog/2009/07/19/emf-swt-et-databinding" rel="bookmark" title="19/07/2009">EMF, SWT et Databinding</a></li>
</ul>
<p><!-- Similar Posts took 38.684 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://zeserveur.fr/blog/2009/05/17/swt-dessiner-des-images-transparentes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
