Tracé de formes géométriques
publication: 20 novembre 2024 / mis à jour 20 novembre 2024
Dans le précédent chapitre, on a appris à définir et utiliser un stylo pour la couleur des tracés. Avant d'aborder le tracé de formes, on va voir comment définir et utiliser un pinceau.
Colorier l'intérieur des formes
Pour colorer l'intérieur d'une forme, on doit d'abord définir le mot CreateSolidBrush
:
z" CreateSolidBrush" 1 Gdi32 CreateSolidBrush ( color -- HBRUSH )
Paramètre:
- color couleur de remplissage
Exemple:
0 value HBRUSH_BLUE
: setBrushes ( -- )
$00 $00 $FF RGB CreateSolidBrush to HBRUSH_BLUE
;
A l'exécution de setBrushes
, le handle délivré par CreateSolidBrush
est stocké dans HBRUSH_BLUE
.
Ce handle HBRUSH_BLUE
sera ensuite sélectionné par SelectObject
.
Tracé de rectangles
Le tracé de rectangles est effectué par le mot Rectangle, dont voici la définition:
\ draw a rectangle z" Rectangle" 5 gdi32 Rectangle ( hdc left top right bottom -- fl )
Paramètres:
- hdc handle du contexte graphique
- left position du bord gauche
- top position du bord haut
- right position du bord droit
- bottom position du bord bas
Exemple:
0 value HPEN_RED
0 value HPEN_BLUE
: setPens ( -- )
PS_SOLID 3 $FF $00 $00 RGB CreatePen to HPEN_RED
PS_DOT 1 $00 $00 $FF RGB CreatePen to HPEN_BLUE
;
create RECT01
10 L, 10 L, 220 L, 80 L,
create RECT02
25 L, 25 L, 235 L, 95 L,
: draw
setPens
setBrushes
hdc RECT01 GetRect Rectangle drop
hdc HPEN_RED SelectObject drop
hdc HBRUSH_BLUE SelectObject drop
hdc RECT02 GetRect Rectangle drop
;
Résultat:

Ici, on a défini deux rectangles via les structures RECT01
et RECT02
.
Le second rectable a son bord et son fond coloré par sélection des objets HPEN_RED
et HBRUSH_BLUE
.
Tracé de polygones
Le tracé de polygones utilise une structure de type POINT
. Pour définir un tracé, il suffit préalablement de
créer un tableau contenant des paires de coordonnées x y, chaque paire correspondant à la position d'une extrémité de segment
décrivant les arêtes du polygone:
create POYGON01 30 L, 37 L, 44 L, 22 L, 58 L, 41 L, 43 L, 54 L, 56 L, 68 L, 43 L, 79 L, 31 L, 65 L, 20 L, 75 L, 5 L, 58 L, 19 L, 47 L, 6 L, 31 L, 19 L, 22 L,
Ici, on a défini un tableau nommé POLYGON01
contenant 12 arêtes. Pour tracer le polygone, on
utilise le mot Polygon
dont voici la définition:
\ draw a polygone z" Polygon" 3 Gdi32 Polygon ( hdc *apt cpt -- fl )
Paramètres:
- hdc handle du contexte graphique
- apt pointeur vers le tableau contenant les données du polygone
- cpt taille du tableau
Utilisation:
: drawPolygon setPens setBrushes hdc HPEN_RED SelectObject drop hdc HBRUSH_BLUE SelectObject drop hdc POYGON01 12 Polygon drop ;
Résultat:

Il n'est pas nécessaire de revenir au point de départ. Le mot Polygon
ferme
automatiquement la figure en connectant la dernière arête à la première arête tracées.
Tracé d'ellipses
Pour tracer une ellipse, on utilisera le mot Ellipse
dont voici la définition:
\ Draw ellipse z" Ellipse" 5 gdi32 Ellipse ( hdc left top right bottom -- fl )
Paramètres:
- hdc handle du contexte graphique
- left position du bord gauche
- top position du bord haut
- right position du bord droit
- bottom position du bord bas
Exemple:
: drawEllipse ( -- )
setPens
setBrushes
hdc HPEN_RED SelectObject drop
hdc 10 10 400 200 Ellipse drop
hdc HPEN_BLUE SelectObject drop
hdc 30 30 420 220 Ellipse drop
;
Résultat:

Tracé d'arcs
Les arcs sont des courbes tracées avec le mot Arc
dont voici la définition:
\ Draw arc z" Arc" 9 gdi32 Arc ( hdc x1 y1 x2 y2 x3 y3 x4 y4 -- fl )
Paramètres:
- hdc handle du contexte graphique
- x1 et y1 coin supérieur droit englobant l'arc
- x2 et y2 coin inférieur droit englobant l'arc
- x3 et y3 position de début du tracé de l'arc
- x4 et y4 position de fin du tracé de l'arc
Visualisation des paramètres de position de l'arc:

Exemple:
0 value HPEN_RED 0 value HPEN_BLUE : setPens ( -- ) PS_SOLID 5 $FF $00 $00 RGB CreatePen to HPEN_RED PS_SOLID 5 $00 $00 $FF RGB CreatePen to HPEN_BLUE ; : drawArcs ( -- ) setPens hdc HPEN_RED SelectObject drop hdc 10 10 400 200 10 105 400 105 Arc drop hdc HPEN_BLUE SelectObject drop hdc 10 10 400 200 400 105 10 105 Arc drop ;
Résultat:

Ici, nous voyons deux demi arcs se suivant en changeant de couleur.
Pour résumer, nous avons abordé les mots de dessin essentiels permettant de créer des fonds graphiques: quadrillages, boites, encadrés, etc...
Legal: site web personnel sans commerce / personal site without seling