CIRCLE, LINE, WINDOW
GW-Basic, utilisé par PC-Basic
Exemple de programmation
CIRCLE
Pour dessiner un cercle, une ellipse et des angles sur l'écran lors de l'utilisation du mode Graphiques.
CIRCLE(xcenter, ycenter), radius[,[color][,[start],[end][,aspect]]]
xcenter et ycenter sont les coordonnées x et y du centre de l'ellipse, et
radius est le rayon (mesuré le long de l'axe principal) de l'ellipse. Les
quantités xcenter et ycenter peuvent être des expressions. Les attributs de
centre peuvent utiliser des coordonnées absolues ou relatives.
color
spécifie la couleur de l'ellipse. Sa valeur dépend du mode d'écran en cours.
Voir les instructions
SCREEN, COLOR, PALETTE pour
plus d'informations sur l'utilisation des couleurs dans différents modes
d'écran.
Les paramètres d'angle de début et de fin sont des arguments en
radian entre -2π et 2π qui spécifient où le dessin de l'ellipse doit commencer
et se terminer. Si début ou fin est négatif, l'ellipse est reliée au point
central par une ligne et les angles sont traités comme s'ils étaient positifs
(notez que cela est différent de l'ajout de 2π).
aspect décrit le rapport
du rayon x au rayon y (x:y). Le rapport d'aspect par défaut dépend du mode
d'écran, mais donne un cercle visuel dans l'un ou l'autre des modes graphiques,
en supposant un rapport d'aspect d'écran standard de 4:3. Si le rapport d'aspect
est inférieur à 1, alors le rayon est donné en x-pixels.
S'il est supérieur à 1, le rayon est donné en pixels y. Dans de nombreux cas,
un rapport d'aspect de 1 donne de meilleures ellipses en mode de résolution
moyenne. Cela permet également de dessiner l'ellipse plus rapidement. L'angle de
départ peut être inférieur à l'angle de fin.
Exemple 1:
10 SCREEN1: CIRCLE(100,100), 50
Exemple 2:
1 ' This will draw 17 ellipses 10 CLS 20 SCREEN 1 30 FOR R=160 TO 0 STEP-10 40 CIRCLE (160,100),R,,,,5/18 50 NEXT
Exemple 3:
10 'This will draw 5 spheres 20 GOTO 160 50 IF VERT GOTO 100 60 CIRCLE (X,Y),R,C,,,.07 70 FOR I = 1 TO 5 80 CIRCLE (X,Y),R,C,,,I*.2:NEXT I 90 IF VERT THEN RETURN 100 CIRCLE (X,Y),R,C,,,1.3 110 CIRCLE (X,Y),R,C,,,1.9 120 CIRCLE (X,Y),R,C,,,3.6 130 CIRCLE (X,Y),R,C,,,9.8 140 IF VERT GOTO 60 150 RETURN 160 CLS: SCREEN 1: COLOR 0,1: KEY OFF: VERT=0 170 X=160: Y=100: C=1: R=50: GOSUB 50 180 X=30: Y=30: C=2: R=30: GOSUB 50 190 X=30: Y=169: GOSUB 50 200 X=289: Y=30: GOSUB 50 210 X=289: Y=169: GOSUB 50 220 LINE (30,30)-(289,169),1 230 LINE (30,169)-(289,30),1 240 LINE (30,169)-(289,30),1,B 250 Z$=INKEY$: IF Z$="" THEN 250
LINE
Pour tracer des lignes et des cases sur l'écran.
LINE [(x1,y1)]-(x2,y2) [,[attribute][,B[F]][,style]]
x1,y1 et x2,y2 spécifient les extrémités d'une ligne.
Le mode de
résolution est déterminé par l'instruction SCREEN.
L'attribut spécifie la
couleur ou l'intensité du pixel affiché (voir les instructions
SCREEN, COLOR, PALETTE ).
B (boîte) dessine une boîte avec les points (x1,y1) et (x2,y2) aux coins
opposés.
BF (boîte remplie) dessine une boîte (comme ,B) et remplit
l'intérieur avec des points.
Noter
Si l'attribut n'est pas
spécifié, deux virgules doivent être utilisées avant B ou BF.
LINE prend
en charge le style d'argument supplémentaire. style est un masque d'entier 16
bits utilisé lors de l'affichage des pixels à l'écran. C'est ce qu'on appelle le
style de ligne.
Chaque fois que LINE stocke un point sur l'écran, il
utilise le bit en circulation actuel avec style. Si ce bit est 0, aucun stockage
ne sera effectué. Si le bit est un 1, alors un stockage normal est effectué.
Après chaque point, la position de bit suivante dans le style est sélectionnée.
Puisqu'un bit 0 dans le style n'efface pas l'ancien contenu, vous
souhaiterez peut-être dessiner une ligne d'arrière-plan avant une ligne stylée,
afin de forcer un arrière-plan connu.
style est utilisé pour les lignes
et les cases normales, mais n'est pas autorisé pour les cases remplies.
Si le paramètre BF est utilisé avec le paramètre de style, une erreur "Syntaxe"
se produira.
Lorsque des valeurs hors limites sont données dans
l'instruction LINE, les coordonnées hors limites ne sont pas visibles à l'écran.
C'est ce qu'on appelle l'écrêtage de ligne.
Dans la syntaxe présentée
ici, la forme de coordonnées STEP (décalage x, décalage y) n'est pas affichée.
Cependant, ce formulaire peut être utilisé partout où une coordonnée est
utilisée.
Dans une instruction LINE, si la forme relative est utilisée
sur la deuxième coordonnée, elle est relative à la première coordonnée.
Après une instruction LINE, le dernier point référencé est x2, y2.
La
forme la plus simple de LINE est la suivante :
LINE -(x2,y2)
Cela trace une ligne du dernier point référencé au point (x2, y2) dans la couleur de premier plan.
Exemples:
LINE (0,100)-(639,100)
Dessine une ligne horizontale qui divise l'écran en
deux de haut en bas dans SCREEN 2
LINE (160,0)-(160,199)
Dessine une ligne verticale qui divise l'écran en
deux de gauche à droite dans SCREEN 1 ; fait une division un quart/trois quarts
dans SCREEN 2.
LIGNE (0,0)-(319,199)
Dessine une ligne diagonale du
coin supérieur gauche au coin inférieur droit de l'écran dans l'ÉCRAN 1, et du
coin supérieur gauche au centre en bas de l'écran dans l'ÉCRAN 2.
LINE
(10,10)-(20,20),2
Dessine des lignes en couleur 2 (voir l'instruction COLOR).
10 CLS
20 LINE -(RND*319,RND*199),RND*4
30 GOTO 20
Dessinez des
lignes en utilisant des attributs aléatoires.
10 FOR X=0 TO 319
20
LINE (X,0)-(X,199),X AND 1
30 NEXT
Dessine un motif alterné : ligne
activée, ligne désactivée.
10 CLS
20 LINE -(RND*639,RND*199),RND*2,BF
30 GOTO 20
Dessine des lignes sur tout l'écran.
LINE
(0,0)-(100,175),,B
Dessine une boîte carrée dans le coin supérieur gauche de
l'écran.
LINE (0,0)-(100,175),,BF
Dessine la même case et la remplit.
LINE (0,0)-(100,175),2,BF
Dessine la même case remplie en magenta.
LINE (0,0)-(100,350),,B
Dessine la même boîte si SCREEN 2 est spécifié.
400 SCREEN 1
410 LINE (160,100)-(160,199),,,&HCCCC
Dessine une ligne
pointillée verticale au centre de l'écran dans SCREEN 1.
220 SCREEN 2
230 LINE (300,100)-(400,50),,B,&HAAAA
Dessine un rectangle avec une ligne
pointillée dans SCREEN 2.
LINE (0,0)-(160,100),3,,&HFF00
Dessine une
ligne pointillée du coin supérieur gauche au centre de l'écran.
WINDOW
Pour dessiner des lignes, des graphiques et des objets dans un espace non délimité par les limites physiques de l'écran.
WINDOW[[SCREEN](x1,y1)-(x2,y2)]
(x1,y1), (x2,y2) sont les coordonnées définies par l'utilisateur. Ces
coordonnées, appelées coordonnées mondiales, peuvent être n'importe quel nombre
à virgule flottante simple précision. Ils définissent l'espace de coordonnées
universel que les instructions graphiques mappent dans l'espace de coordonnées
physiques, tel que défini par l'instruction VIEW.
WINDOW est la région
rectangulaire dans l'espace de coordonnées mondial. Il permet le zoom et le
panoramique. Il permet à l'utilisateur de dessiner des lignes, des graphiques et
des objets dans un espace non limité par les limites physiques de l'écran. Pour
ce faire, l'utilisateur spécifie les paires de coordonnées mondiales (x1, y1) et
(x2, y2.) GW-BASIC convertit ensuite les paires de coordonnées mondiales en
paires de coordonnées physiques appropriées pour un affichage ultérieur dans
l'espace de l'écran.
Window inverse, avec l'attribut screen omis, la
coordonnée y sur les instructions graphiques suivantes. Cela place la coordonnée
(x1,y1) en bas à gauche et la coordonnée (x2,y2) en haut à droite de l'écran.
Cela permet de visualiser l'écran en vraies coordonnées cartésiennes.
Les
coordonnées ne sont pas inversées lorsque l'attribut SCREEN est inclus. Cela
place la coordonnée (x1,y1) dans le coin supérieur gauche et la coordonnée
(x2,y2) dans le coin inférieur droit de l'écran.
L'instruction WINDOW
trie les paires d'arguments x et y par ordre croissant. Par exemple:
WINDOW (50, 50)-(10, 10)
Devient
WINDOW (10, 10)-(50, 50)
Ou
WINDOW (-2, 2)-(2, -2)
Devient
WINDOW (-2, -2)-(2, 2)
Toutes les paires de coordonnées de x et y sont valides, sauf que x1 ne peut
pas être égal à x2 et y1 ne peut pas être égal à y2.
WINDOW sans
arguments désactive les instructions de fenêtre précédentes.
Exemple 1:
Si vous tapez :
NEW: SCREEN 2
l'écran utilise les attributs de coordonnées standard :
(0, 0) (320, 0) (639, 0) ↓ y increases (320, 100) (0, 199) (320, 199) (639, 199)
Exemple 2:
Si vous tapez :
WINDOW (-1, -1)-(1, 1)
l'écran utilise les coordonnées cartésiennes :
(-1, 1) (0, 1) (1, 1) ↑ y increases (0, 0) ↓ y decreases (-1, -1) (0, -1) (1, -1)
Exemple 3:
Si vous tapez :
WINDOW SCREEN (-1, -1)-(1, 1)
l'écran utilise la coordonnée non inversée :
(-1, -1) (0, -1) (1, -1) ↑ y decreases (0, 0) ↓ y increases (-1, 1) (0, 1) (1, 1)
RUN, SCREEN et WINDOW sans attribut désactivent toutes les définitions WINDOW et ramènent l'écran à ses coordonnées physiques normales.