09.02.2017 Views

creez-des-applications-pour-android

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.2 Apprenez à <strong>des</strong>siner<br />

statique Bitmap createBitmap(int width, int height, Bitmap.Config config) avec<br />

width la largeur de la surface, height sa hauteur et config un objet permettant de déterminer<br />

comment les pixels seront stockés dans le Bitmap.<br />

En fait, le paramètre config permet de décrire quel espace de couleur sera utilisé. En effet, les<br />

couleurs peuvent être représentées d’au moins trois manières :<br />

— Pour que chaque pixel ne puisse être qu’une couleur, utilisez Bitmap.Config.RGB_565.<br />

— Pour que chaque pixel puisse être soit une couleur, soit transparent (c’est-à-dire qu’il n’affiche<br />

pas de couleur), utilisez Bitmap.Config.ARGB_8888.<br />

— Enfin, si vous voulez que seul le canal qui représente <strong>des</strong> pixels transparents soit disponible,<br />

donc <strong>pour</strong> n’avoir que <strong>des</strong> pixels transparents, utilisez Bitmap.Config.ALPHA_8.<br />

Par exemple :<br />

Bitmap b = Bitmap.createBitmap(128, 128, Config.ARGB_8888);<br />

Il existe aussi une classe dédiée à la construction de Bitmap : BitmapFactory. Ainsi, <strong>pour</strong><br />

créer un Bitmap depuis un fichier d’image, on fait BitmapFactory.decodeFile("Chemin<br />

vers le fichier"). Pour le faire depuis un fichier de ressource, on utilise la méthode statique<br />

decodeResource(Resources ressources, int id) avec le fichier qui permet l’accès aux<br />

ressources et l’identifiant de la ressource dans id. Par exemple :<br />

Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_search);<br />

[[information]] | N’oubliez pas qu’on peut récupérer un fichier de type Resources sur n’importe<br />

quel Context avec la méthode getResources().<br />

Enfin, et surtout, vous pouvez récupérer un Bitmap avec BitmapFactory.decodeStream(InputStream).<br />

À l’opposé, au moment où l’on n’a plus besoin de Bitmap, on utilise <strong>des</strong>sus la méthode void<br />

recycle(). En effet, ça semble une habitude mais Bitmap n’est aussi qu’une interface et<br />

recycle() permet de libérer toutes les références à certains objets de manière à ce qu’ils<br />

puissent être ramassés par le garbage collector.<br />

[[erreur]] | Après cette opération, le Bitmap n’est plus valide, vous ne <strong>pour</strong>rez plus l’utiliser ou<br />

faire d’opération <strong>des</strong>sus.<br />

6.2.1.2 Le pinceau<br />

Pour être tout à fait exact, Paint représente à la fois le pinceau et la palette. On peut créer un<br />

objet simplement sans passer de paramètre, mais il est possible d’être plus précis en indiquant<br />

<strong>des</strong> fanions. Par exemple, <strong>pour</strong> avoir <strong>des</strong> <strong>des</strong>sins plus nets (mais peut-être plus gourmands en<br />

ressources), on ajoute les fanions Paint.ANTI_ALIAS_FLAG et Paint.DITHER_FLAG :<br />

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);<br />

La première chose est de déterminer ce qu’on veut <strong>des</strong>siner : les contours d’une figure sans son<br />

intérieur, ou uniquement l’intérieur, ou bien même les contours et l’intérieur ? Afin d’assigner<br />

une valeur, on utilise void setStyle(Paint.Style style) :<br />

Paint p = new Paint();<br />

// Dessiner l'intérieur d'une figure<br />

399

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!