IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours complet d’initiation à la programmation


précédentsommairesuivant

Annexe B - Le module Camlgraph

B-1. Présentation

Le module Camlgraph est une adaptation du module graphics livré avec toutes les distributions de Objective Caml. Il reprend les mêmes fonctions avec les mêmes noms. La seule différence réside dans le fait que toutes les fonctions y sont décurryfiées.

Ce module permet de dessiner des points, des segments, des polygones, des cercles et de remplir certaines zones dans une fenêtre graphique. Cette fenêtre graphique peut être considérée comme un tableau de points repérés par leurs coordonnées (cf figure B.1). Ces coordonnées sont des nombres entiers. Seuls les points dont les deux coordonnées sont positives ou nulles et inférieures à la largeur et à la hauteur de la fenêtre sont visibles.

Image non disponible
Figure B.1 Système de coordonnées du module Camlgraph

Le programme ci-dessous illustre une utilisation de ce module. Son exécution produit l'image présentée sur la figure B.2.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
(* auteur : EW                  *)
(* date   : mai 2009            *)
(* objet  : dessin de cercles   *)
(*          concentriques de    *)
(*          couleurs aléatoires *)
(* utilise le module Camlgraph  *)

open Camlgraph ;;

let largeur = 600   (* largeur de la fenêtre graphique *)
and hauteur = 400   (* hauteur de la fenêtre graphique *) ;;

let n = (hauteur - 20) / 2   (* le nombre de cercles a dessiner *)
and cx = largeur / 2   (* abscisse du centre des cercles *)
and cy = hauteur / 2   (* ordonnée du centre des cercles *);;

begin
  Random.init (int_of_float (Unix.time()));
  open_graph (" "^string_of_int(largeur)^"x"^string_of_int(hauteur)) ;
  set_window_title ("Cercles") ;
  for i = 1 to n do
    set_color (rgb(Random.int(256),Random.int(256),Random.int(256)));
    draw_circle (cx,cy,i)
  done;
  print_endline "appuyez sur une touche pour terminer";
  ignore(read_key ()) ;
  close_graph ()
end
Image non disponible
Figure B.2 Figure produite en utilisant le module Camlgraph

B-2. Module Camlgraph

Auteur(s) : FIL

B-2-1. Gestion des fenêtres graphiques

val open_graph : string -> unit

  • open_graph (s) ouvre une fenêtre graphique dont les dimensions sont indiquées par la chaîne s Pour une ouverture de la fenêtre sur l'écran par défaut, la chaîne doit commencer par un espace.

val close_graph : unit -> unit

  • close_graph () ferme de la fenêtre graphique.

val set_window_title : string -> unit

  • set_window_title (s) donne un titre à la fenêtre graphique.

val resize_window : int * int -> unit

  • resize_window (w,h) redimensionne la fenêtre graphique w = largeur, h = hauteur.

val clear_graph : unit -> unit

  • clear_graph () efface le contenu de la fenêtre graphique.

val size_x : unit -> int

  • size_x () donne la largeur de la fenêtre graphique.

val size_y : unit -> int

  • size_y () donne la hauteur de la fenêtre graphique.

B-2-2. Gestion des couleurs

type color = Graphics.color

  • représentation des couleurs.

val rgb : int * int * int -> color

  • rgb (r,g,b) donne une couleur à partir de ses trois composantes rouge, vert, bleu.

val set_color : color -> unit

  • set_color (x) fixe la couleur courante.

val background : color

  • couleur courante de l'arrière plan.

val foreground : color

  • couleur courante de l'avant plan.

Couleurs prédéfinies

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
val black : color
val white : color
val red : color
val green : color
val blue : color
val yellow : color
val cyan : color
val magenta : color

B-2-3. Point et dessin de lignes

val plot : int * int -> unit

  • plot (x,y) dessine un point de coordonnées (x,y).

val point_color : int * int -> color

  • point_color (x,y) donne la couleur du point de coordonnées (x,y).

val moveto : int * int -> unit

  • moveto (x,y) positionne le crayon au point de coordonnées (x,y).

val rmoveto : int * int -> unit

  • rmoveto (x,y) translate le crayon selon le vecteur de coordonnées (x,y).

val current_x : unit -> int

  • current_x () donne l'abscisse de la position courante du crayon.

val current_y : unit -> int

  • current_y () donne l'ordonnée de la position courante du crayon.

val current_point : unit -> int * int

  • current_point () donne les coordonnées de la position courante du crayon.

val lineto : int * int -> unit

  • lineto (x,y) trace un segment depuis la position courante jusqu'au point de coordonnées (x,y).

val rlineto : int * int -> unit

  • rlineto (x,y) trace un segment depuis la position courante selon le vecteur de coordonnées (x,y).

val curveto : (int * int) * (int * int) * (int * int) -> unit

  • curveto (b,c,d) trace une courbe de Bézier du point courant jusqu'au point d avec les points b et c pour points de contrôle.

val draw_rect : int * int * int * int -> unit

  • draw_rect (x1,y1,x2,y2) dessine un rectangle dont le coin inférieur gauche a pour coordonnées (x1,y1) et le point supérieur droit (x2,y2).

val draw_arc : int * int * int * int * int * int -> unit

  • draw_arc (x,y,rx,ry,a1,a2) dessine un arc d'ellipse de centre (x,y), de rayon horizontal rx, de rayon vertical ry, entre les angles a1 et a2.

val draw_ellipse : int * int * int * int -> unit

  • draw_ellipse (x,y,rx,ry) dessine une ellipse de centre (x,y), de rayon horizontal rx, de rayon vertical ry.

val draw_circle : int * int * int -> unit

  • draw_circle (x,y,r) dessine un cercle de centre (x,y), de rayon r.

val set_line_width : int -> unit

  • set_line_width (n) fixe l'épaisseur des traits.

B-2-4. Texte

val draw_char : char -> unit

  • draw_char (c) dessine le caractère c à la position courante.

val draw_string : string -> unit

  • draw_string (s) dessine la chaîne de caractères s à la position courante.

val set_font : string -> unit

  • set_font (s) fixe la police pour dessiner les textes.

val set_text_size : int -> unit

  • set_text_size (n) fixe la taille des caractères pour dessiner les textes.

val text_size : string -> int * int

  • text_size (s) donne les dimensions du texte s s'il était dessiné avec les polices et tailles courantes.

B-2-5. Remplissage

val fill_rect : int * int * int * int -> unit

  • fill_rect (x,y,w,h) remplit le rectangle dont le coin inférieur gauche a pour coordonnées (x,y), de largeur w et de hauteur w, avec la couleur courante.

val fill_arc : int * int * int * int * int * int -> unit

  • fill_arc (x,y,rx,ry,a1,a2) remplit l'arc d'ellipse dont le centre a pour coordonnées (x,y), de rayon horizontal rx et de rayon vertical ry, entre les angles a1 et a2, avec la couleur courante.

val fill_ellipse : int * int * int * int -> unit

  • fill_ellipse (x,y,rx,ry) remplit l'ellipse dont le centre a pour coordonnées (x,y), de rayon horizontal rx et de rayon vertical ry, avec la couleur courante.

val fill_circle : int * int * int -> unit

  • fill_circle (x,y,r) remplit le cercle dont le centre a pour coordonnées (x,y), de rayon r, avec la couleur courante.

précédentsommairesuivant

Licence Creative Commons
Le contenu de cet article est rédigé par Université Lille1 et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2019 Developpez.com.