<div>Thanks for your hints, Matthias,</div>
<div><br>I read the document, and I think I can get a solution from </div>
<div>frame% -&gt; editor-canvas% -&gt; image-snip% -&gt; get-bitmap <br>&nbsp;</div>
<div>I think I still need&nbsp;learn and practice more, to know better about the canvas, editor, pasteboard, editor-canvas etc.</div>
<div>&nbsp;</div>
<div><span class="gmail_quote">On 12/19/07, <b class="gmail_sendername">Matthias Felleisen</b> &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Now it&#39;s time to use the help desk and to search for terms like<br>canvas, editor, pasteboard, editor-canvas and just chase the links.
<br>Everything is hyperlinked, so you can find your way around easily,<br>not that this means everything is easy. -- Matthias<br><br><br><br>On Dec 18, 2007, at 10:00 PM, Lian DanHui wrote:<br><br>&gt; Hello Matthias,<br>
&gt;<br>&gt; Really appreciate your answer provided! It is very clear, and I get<br>&gt; it.<br>&gt;<br>&gt; And I think of other scenarios:<br>&gt; One possible scene, if the picture is scaled up or down on the canvas?<br>
&gt; One possible scene, if the user do some changes on the canvas, and<br>&gt; then click to get the pixel color?<br>&gt;<br>&gt; I think for the first scene, I still can use the method you<br>&gt; provided. But for second case, I don&#39;t know how.
<br>&gt; I wonder if I can get the bitmap-dc% from Canvas dc, or something<br>&gt; similar like that.<br>&gt; Can I get the pixels matrix of the current canvas operated?<br>&gt;<br>&gt; thanks &amp; regards,<br>&gt; Linda Lian
<br>&gt;<br>&gt; On 12/19/07, Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:<br>&gt; On Dec 18, 2007, at 5:08 AM, Lian DanHui wrote:<br>&gt;<br>&gt; &gt; Hello,<br>&gt; &gt;
<br>&gt; &gt; I want to implement something like this:<br>&gt; &gt;&nbsp;&nbsp; 1. Display a picture in a Canvas on a Frame;<br>&gt; &gt;&nbsp;&nbsp; 2. User can click on the picture;<br>&gt; &gt;&nbsp;&nbsp; 3. I want to get the color of the pixel that user clicked;
<br>&gt; &gt;<br>&gt; &gt; For Canvas object,&nbsp;&nbsp;Using what method or what strategy, that I can<br>&gt; &gt; get the pixel info?<br>&gt; &gt; Thanks a lot for the help!<br>&gt;<br>&gt; Here is a literal translation of your request into the most basic
<br>&gt; language. If you are a student and using world.ss, it is simpler. --<br>&gt; Matthias<br>&gt;<br>&gt; #lang scheme/gui<br>&gt;<br>&gt; ;; obtain a bitmap and stick it into a bitmap dc<br>&gt; (define plt<br>&gt;&nbsp;&nbsp; (make-object bitmap% (build-path (collection-path &quot;icons&quot;)
<br>&gt; &quot;plt.gif&quot;)))<br>&gt; (define bm<br>&gt;&nbsp;&nbsp; (new bitmap-dc% [bitmap plt]))<br>&gt;<br>&gt; ;; --- set up a frame with a canvas in which to display this image<br>&gt; (define frame<br>&gt;&nbsp;&nbsp; (new frame% [label &quot;Test for Linda&quot;]
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[width (send plt get-width)] [height (send plt get-height)]))<br>&gt;<br>&gt; (define canvas (new<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;; --- create a class on the fly that overrides the<br>&gt; callback for<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;; --- mouse events in a canvas; you could name it,
<br>&gt; if needed<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (class canvas%<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;; Event -&gt; Void<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;; act on each mouse event<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define/override (on-event e)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define kind (send e button-down?))
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define x (send e get-x))<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define y (send e get-y))<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define c (new color%))<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (when kind<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (send bm get-pixel x y c)
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (printf &quot;color is ~s ~s ~s\n&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (send c red) (send c green) (send<br>&gt; c blue))<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (printf &quot;no color&quot;))))
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (super-new))<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;--- provide a frame and a paint method for<br>&gt; displaying plt.gif<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [parent frame]<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [paint-callback (lambda (e dc) (send dc draw-bitmap
<br>&gt; plt 0 0))]))<br>&gt;<br>&gt; ;; --- run program run<br>&gt; (send frame show #t)<br>&gt;<br><br></blockquote></div><br>