PAINT
GW-Basic, utilisé par PC-Basic
Exemple de programmation
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.