#lang racket/gui ;;; api5-db.rkt -Utilisation d'un DOUBLE BUFFER pour eviter les scintillements (page 335) ;;; 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))) (define CANVAS (new canvas% (parent FRAME) (min-width 400) (min-height 100) (paint-callback (lambda (obj evt) (let ((dc (send obj get-dc))) (thread (lambda () (send BITMAP-DC set-brush BLACK-BRUSH) (do ((x 0 (+ x 1))) ((= x 800) (void)) (send BITMAP-DC clear) (send BITMAP-DC draw-ellipse (modulo x 400) 0 100 100) (send dc draw-bitmap BITMAP 0 0 'solid) (sleep 0.01))))))))) (send FRAME show #t) (printf "Vous ne devriez observer aucun scientillement.\n")