Ecrire dans une boite [Scheme] - Divers - Programmation
Marsh Posté le 12-04-2010 à 23:34:46
Apparemment, les editor-canvas% ont comme parent des containers%, du style frame dialog, panel pane (voir ici : http://docs.plt-scheme.org/gui/editor-canvas_.html
Il faut que tu trouves comment obtenir un container adéquat à partir d'un viewport.
Marsh Posté le 13-04-2010 à 11:21:37
Coucou Trap D ! Merci de te pencher sur mon cas !
Quelle est la différence entre un viewport et un "frame dialog, panel pane" ?
Marsh Posté le 13-04-2010 à 13:12:36
apaachee a écrit : Coucou Trap D ! Merci de te pencher sur mon cas ! |
Si on lit ce qui est écrit ici : http://docs.plt-scheme.org/graphics/index.html la bibliothèque "viewport graphics" est assez pauvre et ne permet pas des constructions évoluées comme avec les frame, dialog et autres.
Il faut peut-être que tu revoies ta conception !?
Marsh Posté le 14-04-2010 à 13:02:10
Re Trap ^^
J'ai effectivement regardé et le prog que je dois écrire ne necessite pas une librairie trop évolué, "viewport graphics" est suffisante
Tu peux peut-être maider sur quelque chose de très simple je pense :
(define a 10)
(define b '(a 4))
(car b) = a
et non
(car b) = 10
Comment faire pour lister la valeur des variables ?
Merci
Marsh Posté le 14-04-2010 à 23:18:03
La valeur de (car b) est a et non pas 10 qui est la valeur de a, si tu demandes (eval (car b)) tu obtiendras effectivement 10.
Pour le binding tu devrais peut-être regarder cette page http://docs.plt-scheme.org/referen [...] ech._bind)
Pour eval celle-ci : http://mitpress.mit.edu/sicp/full- [...] %_idx_4230
Marsh Posté le 12-04-2010 à 18:45:47
Bonjour et merci d'avance à ceux qui prendront la peine de me lire =)
Voila je réalise un programme, et j'ai besoin d'écrire dans des "cases" et ce graphiquement (pas dans le terminal de dr scheme) vu que je dessine a coté de ce que je dois écrire.
Comment écrire une variable dans une case directement, y a t'il une fonction prévu pour cela ?
Sinon comment écrire à l'écran, je dessinerais un rectangle moi-même autour.
Voila mon erreur...
Et voici mon code !
(require (lib "graphics.ss" "graphics" ))
; Les variables globales
(define !dimX! 300)
(define !dimY! 300)
(define !port! #f) ;Fenêtre
(define !origine! #f) ;Origine du graphe
(define !black! #f) ;Couleur noire
(define !pos! #f) ;Position du pointeur Courant
(define !rgb! #f) ;Couleur du tracé (par défaut !black!)
(define !longboite! 20) ;Longueur d'un coté dune boite
; Ouvre une fenetre graphiques de haut sur large pixels
; Par defaut haut=600 et large=600
; Maximum haut=800 large=1200
; Origine du repere au centre de la fenetre, couleur du crayon : noir
(define init-graphics
(lambda (args)
(begin
(if (pair? args)
(begin
(if (<= (car args) 1200)
(set! !dimX! (quotient (car args) 2))
)
(if (and
(pair? (cdr args))
(<= (cadr args) 800)
)
(set! !dimY! (quotient (cadr args) 2))
)
)
)
(open-graphics)
(set! !port! (open-viewport "Graphics Window" (* !dimX! 2) (* !dimY! 2)))
(set! !origine! (make-posn !dimX! !dimY!))
(set! !black! (make-rgb 0 0 0))
(set! !pos! !origine!)
(set! !rgb! !black!)
)
)
)
; Place le crayon au point (x,y)
(define position-pen
(lambda (x y)
(set! !pos! (make-posn (+ !dimX! x) (- !dimY! y)))
)
)
; Dessine une ligne depuis la position courante jusqu'a la position (x,y)
; La nouvelle position du crayon est (x,y)
(define draw-line-to
(lambda (x y)
(let (
(point (make-posn (+ x !dimX!) (- !dimY! y)))
)
((draw-line !port!) !pos! point !rgb!)
(set! !pos! point)
)
)
)
;Dessine un cercle "solide" de centre (x,y)
;Le cercle respecte le ratio de dimensions avec la boite
(define cercle-centre
(lambda (x y)
(let*(
(rayon (quotient !longboite! 7))
(diametre (* 2 rayon))
)
(position-pen (- x rayon) (+ y rayon))
((draw-solid-ellipse !port!) !pos! diametre diametre !rgb!)
)
)
)
;Dessine un carré de centre (x,y)
;Le coté du carré est de taille !longboite!
(define boite
(lambda (x y)
(let(
(dim (quotient !longboite! 2))
)
(position-pen (+ x dim) (- y dim))
(draw-line-to (- x dim) (- y dim))
(draw-line-to (- x dim) (+ y dim))
(draw-line-to (+ x dim) (+ y dim))
(draw-line-to (+ x dim) (- y dim))
(cercle-centre x y)
(position-pen x y)
)
)
)
; Affiche dans une boite la variable a
; (define affichage
; (lambda (a)
; Add a text field to the dialog
; (new text-field% [parent dialog] [label "Your name"])
;Fonctions pour déterminer le nombre de chiffres d'un nombre
(define taille-nombre
(lambda (n)
(taille-nombre-it n 1)
)
)
(define taille-nombre-it
(lambda (n i)
(if (< (/ n 10) 1)
i
(taille-nombre-it (quotient n 10) (+ i 1))
)
)
)
;Variables pour la fenetre
(define hauteur 640)
(define largeur 480)
(define window (list hauteur largeur))
;On ouvre la fenetre
(init-graphics window)
(boite 0 0)
(boite -100 -100)
(boite 100 100)
(boite -100 100)
(boite 100 -100)
(define editeur (new editor-canvas% [parent !port!]))
(define texte (new text%))
(send editeur set-editor texte)
(send texte insert "SALUT LOL" )