Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Documentation » QBasic » Capturer une zone graphique

Citer Linux Firefox 2 - Posté le 19/03/2008 à 16:51
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 instantanément en dévoilant les graphismes du dessous.



Pour ceux qui connaissent le basculement entre les modes d'écran je précise que l'on travail en mode 9 ou 12, donc pas de ça ici!

D'autres me diront 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
- On replace la zone capturée

Tout d'abord, on dimensionne un tableau à l'aide de l'instruction 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 trace 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 coordonné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 fenêtres, des objets, ou des décors, tout ça avec une fluidité étonnante.

ATTENTION: le tableau nécessaire 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.
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
L'envoi d'un message sur ce forum est réservé aux membres du groupe ProgBoards Documentation.
v6 © Computaid SPRL 2005-2012 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,027 s - Crédits - Stats
1 connecté