[racket] A beginner's question re drawing on a canvas

From: Chris Wright (cawright.99 at gmail.com)
Date: Wed Oct 1 21:51:12 EDT 2014

I would like to draw on a canvas in a window at various times during
program execution.
My first attempt was to combine two examples:

#lang racket/gui

(define frame (new frame%
                   [label "Example"]
                   [width 300]
                   [height 300]))
(define top-canvas (new canvas% [parent frame]))

(send frame show #t)

(define dc (send top-canvas get-dc))

(send dc draw-rectangle
      0  10   ; Top-left at (0, 10), 10 pixels down from top-left
      30 10) ; 30 pixels wide and 10 pixels high
(send dc draw-line
      0 0    ; Start at (0, 0), the top-left corner
      30 30) ; and draw to (30, 30), the bottom-right corner
(send dc draw-line
      0 30   ; Start at (0, 30), the bottom-left corner
      30 0)  ; and draw to (30, 0), the top-right corner



The cross and box are drawn, but "instantly" over-written by a blank
canvas. I suppose this is because on-paint is triggered? (not sure by
what..)
If I put the (send frame...) form at the end of the code, the cross and box
aren't seen.

I am sure this is due to me not understanding the model properly - I'd be
grateful for some help...

many thanks

Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20141002/e5216d7a/attachment.html>

Posted on the users mailing list.