[racket] Invisible Canvas question

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Thu Mar 31 16:58:28 EDT 2011

A plain `panel%' doesn't perform any geometry management of its
children, and so `invisible-canvas' isn't moved and resized to fill the
frame. On my screen, I can see a little white dot where the canvas is 1
pixel by 1 pixel.

Normally, you want either `vertical-panel%' or `horizontal-panel%', or
you make a subclass of `panel%' to implement a different kind of
geometry management.


At Thu, 31 Mar 2011 17:29:14 -0300, Eduardo Bellani wrote:
> Could someone please explain why there is an invisible canvas in this
> example?
> 
> Env:
> Linux 2.6.31-23-generic Ubuntu i686 GNU/Linux
> racket 5.1.0.4
> 
> #lang racket
> 
> (require racket/gui)
> 
> (define bitmap-canvas%
>   (class canvas%
>     (init-field [bitmap #f])
>     (inherit get-dc)
>     (define/override (on-paint)
>       (send (get-dc) draw-bitmap bitmap 0 0))
>     (super-new)))
> 
> 
> (define bitmap (read-bitmap "data/image_0.jpg"))
> 
> (define f (new frame% [label "foo"] [width 100] [height 100]))
> (define p (new panel% [parent f]))
> (define p2 (new vertical-panel% [parent f]))
> 
> ;; why is this invisible?
> (define invisible-canvas (new bitmap-canvas%
>                               [parent p]
>                               [bitmap bitmap]))
> (define visible-canvas (new bitmap-canvas%
>                             [parent p2]
>                             [bitmap bitmap]))
> 
> (send f show #t)
> 
> 
> 
> 
> -- 
> Eduardo Bellani
> 
> omnia mutantur, nihil interit.
> _________________________________________________
>   For list-related administrative tasks:
>   http://lists.racket-lang.org/listinfo/users


Posted on the users mailing list.