En débutant dans les graphismes sous QBasic, on peut avoir à faire face à une multitude de problèmes. Par exemple, imaginons que différents graphismes recouvrent l'écran, et que l'on affiche une fenêtre par dessus, nous voulons que d'un simple clic de souris la fenêtre disparaisse instentanément en dévoilant les graphismes du dessous.
Pour ceux qui connaissent le basculent entre les modes d'écran je précise que l'on travail en mode 9 ou 12, donc pas de ça ici!
D'autres autres me dirons probablement qu'il suffit d'effacer l'écran et de réafficher les graphismes, mais il faudrais pour cela que tout les graphismes de l'écran soit en mémoire, et QBasic ne permet qu'un accès très limité à la mémoire vive.
Mais alors?
Déterminons en premier lieu les étapes à suivre:
- On copie la zone de l'écran derrière la fenêtre
- On affiche la fenêtre
- L'utilisateur clique
- On trace un rectangle noir sur la zone occupée par la fenêtre
- Puis on replace la zone capturée
Tout d'abord on dimensionne un tableau à l'aide de la commande DIM tableau(valeur) (pour la valeur du tableau essayez une valeur de plus en plus grande jusqu'à ne plus obtenir de message d'erreur).
- Pour capturer une zone de l'écran on utilise
GET (x1, y1)-(x1, y2), tableau
- On tracere le rectangle à l'aide de LINE (x1, y1)-(x1, y2), couleur
- Puis on replace la zone graphique avec PUT (x1, y1), tableau
Exemple:
Pour une fenêtre dont les coordonées seront: x1 = 200; y1 = 100; x2 = 440; et y2 = 380
Affichage de la fenêtre:
DIM fondFenetre(10000)
GET (200, 100)-(440, 380), fondFenetre
** on affiche la fenetre **
Effacer la fenêtre:
LINE (200, 100)-(440, 380), 0, BF
PUT (200, 100), fondFenetre
Et voilà, avec cette routine vous pourrez effectuer des basculements rapides entre des fenetres, des objets, ou des décors, tout ça avec une fluidité étonnante.
ATTENTION: le tableau nécéssaire occupe beaucoup de place mémoire et capturer l'écran entier est impossible avec le peu de mémoire que nous offre un
module QBasic.