#lang racket/gui ;;; api5-timer.rkt -Utilisation d'un DOUBLE-BUFFER et d'une HORLOGE pour une animation (page 336) ;;; Chapitre 14 (Objets et API graphique) ;;; Livre PCPS : "Premiers Cours de Programmation avec Scheme" ;;; Langage determine par le source (define FRAME (new frame% (label "thread") (stretchable-width #f) (stretchable-height #f))) (define BLACK-BRUSH (make-object brush% "black" 'solid)) (define BITMAP (make-object bitmap% 400 100)) (define BITMAP-DC (new bitmap-dc% (bitmap BITMAP))) (send BITMAP-DC set-brush BLACK-BRUSH) (define TIMER (new timer% (notify-callback (lambda () (send CANVAS on-paint))))) (define X -100) (define CANVAS (new canvas% (parent FRAME) (min-width 400) (min-height 100) (paint-callback (lambda (obj dc) (send BITMAP-DC clear) (send BITMAP-DC draw-ellipse X 0 100 100) (send dc draw-bitmap BITMAP 0 0 'solid) (set! X (if (>= X 400) -100 (+ X 1))))))) (send FRAME show #t) (send TIMER start 10)