bpxDraw()

Dessine un bitmap de format .BPX provenant de la carte SD

 

Exemples d'utilisation

bpxDraw("photo.bmp",0,0); // Dessine l'image BPX
bpxDraw("/photo.bmp",0,0); // Pareil "/" en début indique la racine. 
bpDraw("rep/photo.bmp",0,0); // Dessine l'image BPX
bpxDraw("photo.bmp",230,230); // N'affiche rien si l'image "dépasse"

 

Référence

byte bpxDraw(String fileName, int x = -1, int y = -1);

Paramètre passé

fileName: nom du fichier sur la carte SD (format 8+3).
x,y: position du coin en haut à gauche du bitmap

Valeur retournée

Le code d'erreur:
0: tout s'est bien passé
1: problème d'initialisation de la carte SD
2: le fichier spécifié n'existe pas
3: le bitmap ne tient pas dans l'écran

 

Voir aussi

- bmpDraw(); Charge un bitmap .BMP de la carte SD
- bmpSave(); Sauvegarde un bitmap .BMP sur la carte SD
- bpxSave(); Sauvegarde un bitmap .BPX sur la carte SD
- setLimites(); Limite la zone de dessin
- screenPrint(); Copie d'écran sur la carte SD
- initSD(); Initialisation de la carte SD
- point(); Dessine un point

 

Notes

Le format est spécifique aux écrans ayant des pixels sur 16 bits, les couleurs sont déjà au format 16 bits de l'afficheur. Les fichiers BPX sont plus petits que les fichiers BMP et s'affichent donc 50% plus vite. Ce format est donc plus adapté pour stocker des zones d'écran.

Si le paramètre x (resp y) est omis ou si il vaut -1, l'image sera placée le plus à gauche (resp haut), en accord avec la limite qui peut avoir été définie avec la fonction setLimites().

Si l'image est trop grande et ne tient pas dans l'écran ou dans les limites fixées par la fonction setLimites(), elle ne sera pas dessinée. Cela permet entre autre de demander une image paysage et une image portrait sachant qu'une seule sera affichée.

La carte doit être au format FAT16 ou FAT32. Si le nom est trop long (plus de 8 caractères), le fichier n'est pas trouvé et rien n'est dessiné. Les répertoires sont séparés par le caractère '/'.

Ce format est adapté pour dessiner des fonds d'écran; par exemple, on développe son programme avec des BMP, et quand il est au point, on transforme les BPM en BPX. Pour créer un BPX, il suffit dessiner une image à l'écran, par exemple un BMP, puis sauvegarder au format BPX par bpxSave(); .

 

Exemple

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-402-bpxDraw\Exemple-402-bpxDraw.ino (dans votre fichier téléchargé):

// Ce programme affiche un fond d'écran

// Pour que le programme fonctionne, il faut insérer une carte microSD qui contienne le répertoire SD contenu dans
// PecheuxGraph.zip/examples

#include <PecheuxGraph_ILI9341_8bits.h>
void setup() 
{
  setGraphMode(PAYSAGE);
  
  // Affiche un seul fond d'écran
  if ( // Test pour voir si il y a bien la carte SD
    bpxDraw("320x240/1.bpx")* // Affiché seulement en mode paysage
    bpxDraw("240x320/20.bpx") // Affiché seulement en mode portrait
  // Si les deux copies ont échouées, la multiplication des deux codes d'erreurs eest non nulle
  !=0) text("Il n'y a pas la carte SD,\nou le répertoire \"SD\" n'a pas été\nrecopié sur la carte"); 
}

void loop()
{
}

Résultat:

 

Côté technique

Un fichier BPX ne contient que des mots de 16 bits les uns à la suite ds autres. Les deux premières valeurs sont la largeur et la hauteur de l'image. Les valeurs qui suivent sont les couleurs des points, valeurs que l'on a dans la mémoire de l'écran, ou retourné par la fonction RGBcolor().

L'avantage du .BPX est qu'il est adapté à l'écran qui est en mode 16 bits. On reconnaît sur l'afficheur les .BPX car ils se dessinent en commençant par le haut. Chaque point de couleur utilise 16 bits contre 24 pour les BMP. C'est pour cela que l'affichage est plus rapide.

Contrairement aux lignes, arc, rectangles... Si une partie de l'image ne tient pas sur l'afficheur, elle n'est pas dessinée du tout. Cela permet d'économiser le code.

Pour déplacer une zone d'écran, il vaut mieux utiliser getPoint() et point(). Le code est un peu plus long à écrire, mais c'est plus rapide, car c'est la carte SD qui prend le plus de temps.

 

screenPrint()   <<     >>   bpxSave()