thank you very much<div>the following code works well</div><div><div>===================================================</div><div>#lang scheme/gui</div><div>(require 2htdp/image)</div><div>(define pic dc&lt;%&gt;)</div><div>
(define chipset (make-object bitmap% &quot;town.png&quot; &#39;png))</div><div>(define f (instantiate frame% (&quot;map editor&quot;)))</div><div>(define mcan% </div><div>  (class canvas%</div><div>    </div><div>    (override on-event on-paint)</div>
<div>    (define on-paint</div><div>      (λ () (send (send this get-dc) draw-bitmap chipset 0 0)))</div><div>    (define on-event (λ (e) </div><div>                       (send msg set-label </div><div>                             (string-append (number-&gt;string (send e get-x)) &quot; &quot; </div>
<div>                                            (number-&gt;string (send e get-y))))))</div><div>    (super-instantiate ())))</div><div><br></div><div>(define mcan (new mcan% (parent f) (min-width (image-width chipset)) (min-height (image-height chipset))))</div>
<div><br></div><div>(define msg (instantiate message% (&quot;nothing so far&quot; f)))</div><div>(send f show #t)</div><div>===================================================</div><br><div class="gmail_quote">2010/10/27 Ryan Culpepper <span dir="ltr">&lt;<a href="mailto:ryanc@ccs.neu.edu">ryanc@ccs.neu.edu</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">김태윤 wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
drawing on canvas what&#39;s wrong with my code?<br>
<br>
I coded as follow and run it but nothing apear.<br>
could sombody tell me what&#39;s wrong with my code?<br>
<br>
#lang scheme/gui<br>
(require 2htdp/image)<br>
(define pic dc&lt;%&gt;)<br>
<br>
(define f (instantiate frame% (&quot;map editor&quot;)))<br>
(define mcan%<br>
  (class canvas%<br>
<br>
    (override on-event)<br>
<br>
    (define on-event (λ (e)<br>
                       (send msg set-label<br>
                             (string-append (number-&gt;string (send e get-x)) &quot; &quot;<br>
                                            (number-&gt;string (send e get-y))))))<br>
    (super-instantiate ())))<br>
<br>
(define mcan (new mcan% (parent f) (min-width 400) (min-height 400)))<br>
(send (send mcan get-dc) draw-bitmap (make-object bitmap% &quot;town.png&quot;<br>
&#39;png) 16 16)<br>
<br>
(define msg (instantiate message% (&quot;nothing so far&quot; f)))<br>
(send f show #t)<br>
</blockquote>
<br></div></div>
A plain canvas% doesn&#39;t remember what&#39;s drawn to it. In your code, you&#39;re drawing to the canvas before the frame is visible, and by the time the canvas is shown it has forgotten what you&#39;ve drawn on it.<br>

<br>
The code that draws on the canvas&#39;s dc should be inside the canvas&#39;s on-paint method:<br>
<br>
  (class canvas%<br>
    ...<br>
    (define/override (on-paint)<br>
      (send (send this get-canvas) draw-bitmap the-bitmap 16 16)<br>
      (super on-paint))<br>
    ...)<br><font color="#888888">
<br>
Ryan<br>
</font></blockquote></div><br></div>