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 _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

