PAINT

GW-Basic, utilisé par PC-Basic
Exemple de programmation

PC-BASIC

Pour remplir une figure graphique avec l'attribut sélectionné.

PAINT (x start,y start)[,paint attribute[,border attribute][,bckgrnd attribute]]

L'instruction PAINT remplit une figure graphique arbitraire de l'attribut de bordure spécifié avec l'attribut de peinture spécifié.

Si l'attribut de peinture n'est pas donné, il sera par défaut l'attribut de premier plan. L'attribut border par défaut est l'attribut paint. Voir les instructions SCREEN, COLOR, PALETTE pour plus d'informations.

PAINT doit commencer sur un point non frontalier, sinon PAINT n'aura aucun effet.

PAINT peut remplir n'importe quelle figure, mais peindre des bords irréguliers ou des figures très complexes peut entraîner une erreur "Mémoire insuffisante". L'instruction CLEAR peut être utilisée pour augmenter la quantité d'espace de pile disponible.

Les points spécifiés en dehors des limites de l'écran ne seront pas tracés et aucune erreur ne se produira.

Voir l'instruction SCREEN pour une description des différents modes d'écran.

Peinture Carrelage

Le carrelage PAINT est similaire au style LINE. Comme LINE, PAINT regarde un masque de mosaïque chaque fois qu'un point est posé sur l'écran.

Si l'attribut paint est omis, l'attribut de premier plan standard est utilisé.

Si l'attribut de peinture est une formule numérique, alors le nombre doit être une couleur valide, et il est utilisé pour peindre la zone comme avant.

Si l'attribut de peinture est une formule de chaîne, la mosaïque est effectuée comme suit :

Le masque de mosaïque a toujours une largeur de huit bits et peut être long de 1 à 64 octets.

Chaque octet de la chaîne de tuiles masque huit bits le long de l'axe x lors de la mise en place de points. Chaque octet de la chaîne de mosaïque est pivoté selon les besoins pour s'aligner le long de l'axe y, de sorte que :

tile_byte_mask=y MOD tile_length

où y est la position du curseur graphique sur l'axe des y.

tile_length est la longueur en octets de la chaîne de tuile définie par l'utilisateur (1 à 64 octets).

Ceci est fait pour que le motif de mosaïque soit reproduit uniformément sur tout l'écran (comme si un PAINT (0,0).. était utilisé).

x Increases -->        Bit of Tile Byte
x,y  8 7 6 5 4 3 2 1
0,0 |x|x|x|x|x|x|x|x|  Tile byte 1
0,1 |x|x|x|x|x|x|x|x|  Tile byte 2
0,2 |x|x|x|x|x|x|x|x|  Tile byte 3
.
.
.
0,63 |x|x|x|x|x|x|x|x| Tile byte 64
                       (maximum allowed)

En mode haute résolution (SCREEN 2), l'écran peut être peint avec des X par l'instruction suivante :

PAINT (320,100),CHR$(&H81)+CHR$(&H42)+CHR$(&H24)+CHR$(&H18)+CHR$(&H18)+CHR$(&H24)+CHR$(&H81)

Cela apparaît sur l'écran comme suit :

x increases -->
0,0 |x| | | | | | |x|  CHR$(&H81)  Tile byte 1
0,1 | |x| | | | |x| |  CHR$(&H42)  Tile byte 2
0,2 | | |x| | |x| | |  CHR$(&H24)  Tile byte 3
0,3 | | | |x|x| | | |  CHR$(&H18)  Tile byte 4
0,4 | | | |x|x| | | |  CHR$(&H18)  Tile byte 5
0,5 | | |x| | |x| | |  CHR$(&H24)  Tile byte 6
0,6 | |x| | | | |x| |  CHR$(&H42)  Tile byte 7
0,7 |x| | | | | | |x|  CHR$(&H81)  Tile byte 8

Puisqu'il y a deux bits par pixel en mode de résolution moyenne (ÉCRAN 1), chaque octet du motif de mosaïque ne décrit que quatre pixels. Dans ce cas, tous les deux bits de l'octet de tuile décrivent une des quatre couleurs possibles associées à chacun des quatre pixels à déposer.

L'attribut bckgrnd spécifie le motif de mosaïque d'arrière-plan ou l'octet de couleur à ignorer lors de la vérification de la terminaison de la limite. L'attribut bckgrnd est une formule de chaîne renvoyant un caractère. Lorsqu'il est omis, la valeur par défaut est CHR$(0).

Parfois, vous voudrez peut-être peindre des carreaux sur une zone déjà peinte de la même couleur que deux lignes consécutives du motif de carreaux. PAINT se termine lorsqu'il rencontre deux lignes consécutives de la même couleur que le point en cours de définition (le point est entouré).

Il n'est pas possible de dessiner des lignes bleues et rouges alternées sur un fond rouge sans l'attribut bckgrnd. PAINT s'arrête dès que le premier pixel rouge est dessiné. En spécifiant le rouge (CHR$(&HAA)) comme attribut d'arrière-plan, la ligne rouge est tracée sur l'arrière-plan rouge.

Vous ne pouvez pas spécifier plus de deux octets consécutifs dans la chaîne de mosaïque qui correspondent à l'attribut d'arrière-plan. Spécifier plus de deux résultats dans une erreur "Appel de fonction illégal".

Exemples:

10 CLS
20 SCREEN 1
30 LINE (0, 0)-(100, 150), 2, B
40 PAINT (50, 50),1,2
50 LOCATE 20, 1

L'instruction PAINT de la ligne 40 remplit la case dessinée à la ligne 30 avec la couleur 1.

 

 

 

 

 

 

 

Recherche personnalisée